Comment créer une substitution de mots clés de chiffrement

Je suis en train de développer un mécanisme de chiffrement par substitution qui utilise un mot-clé pour créer un nouvel alphabet de chiffrement. Je suis nouveau à Java (je suis sûr que vous serez en mesure de le dire!) et je trouve ça
dur pour envelopper ma tête autour du code pour ce que je dois faire.

Ma compréhension est comme suit:

Si par exemple, le mot clé est javben, je devrais commencer par trouver l'indice de la "j" dans le texte en clair de la chaîne de matrice, ce qui est 9. Je veux la maj le texte en clair[9] dans le texte chiffré[0] et déplacer chaque élément par 1. Donc, le premier passage de ce résultat serait:

cipherText[] = {"j","a","b","c","d","e","f","g","h","i","k","l","m","n","o","p","q","r","s","t","u","v","w","r","x","y","z"}

Puis je trouver la "une", et ça c'est déjà là où il devrait être, donc je vais avoir besoin d'en tenir compte et de ne pas le déplacer -- en quelque sorte. Le caractère suivant est le "v" et de sorte que le processus se poursuive.

Après le passage tout en le cipher je doit:

plainText []= {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","r","x","y","z"}
cipherText[]= {"j","a","v","b","e","n","c","d","f","g","h","i","k","l","m","o","p","q","r","s","t","u","w","r","x","y","z"}

Comme vous pouvez le voir, je suis raisonnablement sûr que je comprends le processus de ce qui le traverse, mais j'ai vraiment du mal envelopper ma tête autour du code requis pour cette. De l'aide s'il vous plaît!

import java.util.Scanner;
import java.io.*;
/**
* This program uses a keyword for a simple substitution cipher.
* 
* @author Bryan
* @version Programming Project
*/
public class Cipher
{
//The main method removes duplicate characters in a word input by the user.
public static void main(String[] args) throws IOException
{
//Creatae a new scanner object for keyboard input
Scanner keyboard = new Scanner(System.in);
//prompt the user to enter a word
System.out.println("Please enter your keyword: ");
//and get their input
String input = keyboard.nextLine();
//the keyword will be built up here
String keyword = "";
while(input.length() > 0) 
{
//get the first letter
char letter = input.charAt(0);
//if the letter is not already in the output
if (keyword.indexOf(letter) == -1)
{
//add it to the end
keyword = keyword + letter;
}
//that letter is processed : discard it
input = input.substring(1);
}
//this is just to confirm the duplicate letters in the keyword are removed
System.out.println(keyword); 
getFile();
}
/**
* This asks the user to specify a filename which is then 
* read into the program for enciphering
*/
public static void getFile()throws IOException
{
//Creatae a new scanner object for keyboard input
Scanner keyboard = new Scanner(System.in);
//Get the file name
System.out.println("Enter the file name: ");
String filename = keyboard.nextLine();
//Open the file
File file = new File(filename);
Scanner inputFile = new Scanner(file);
//Read the lines from the file until no more are left
while (inputFile.hasNext())
{
//Read the next line
String allText = inputFile.nextLine();
//Display the text
System.out.println(allText);
}
//Close the file
inputFile.close();
}
public static void alphabet()
{
String[] plainText =     {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
String[] cipherText = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
}
}
  • Votre processus est beaucoup trop complexe. Pourquoi ne pas tout simplement prendre votre mot-clé (javben), puis d'en ajouter chaque lettre de l'alphabet (a, b, c...), sauf si elle est contenue dans le mot-clé?
  • C'était de très bons conseils, m'a vraiment aidé à simplifier le problème. Merci!
InformationsquelleAutor user3382405 | 2014-04-24