Для домашней работы я должен рассчитать число семян. Нам дан входной файл, который мы должны расшифровать в выходной файл. Что мне нужно сделать, так это найти «начальное» число, чтобы сгенерировать случайное число, чтобы «шифрование» было случайным.
Единственный намек, который мы получили, заключается в том, что исходный текст - это английский роман. Мы должны полностью рассчитать «семя» с помощью программы. Кто-нибудь знает, как это сделать?
Я думал, цикл for, который расшифровывает файл каждый раз, пока выходной файл не будет иметь «специального» символа? Но я не знаю, как это сделать.
У меня есть функция en / decryption здесь:
static char crypt(char input, int random, boolean encrypt)
{
assert random>=0&&random<=95 : "Random has to be between 0 and 95.";
if(input=='\n')
return '\n';
if((int)input>=32||(int)input<=127)
{
if(encrypt)
{
char inputEncrypted=(char)((input-32+random+96)%96+32);
return inputEncrypted;
} else
{
char inputDecrypted=(char)((input-32-random+96)%96+32);
return inputDecrypted;
}
}
return input;
}
}
Моя основная функция:
package ..;
public static void main(String[] args) throws IOException
{
Scanner scanner=new Scanner(System.in);
System.out.println("Give true if you want to encrypt, false for decrypt: ");
boolean encrypt=scanner.nextBoolean();
System.out.println("Give the input filename");
File inputFile=new File(scanner.next());
InputStreamReader reader=new InputStreamReader(new FileInputStream(inputFile));
System.out.println("Give the output filename");
File outputFile=new File(scanner.next());
OutputStreamWriter writer;
try
{
writer=new OutputStreamWriter(new FileOutputStream(outputFile));
{
Random generator=new Random(seed); //this one I have to calculate
int c;
while((c=reader.read())>=0)
{
writer.write(crypt((char)c,generator.nextInt(96),encrypt));
}
reader.close();
writer.close();
}
}
catch(FileNotFoundException e)
{
System.out.println("File is not found!");
}
scanner.close();
}
Частьиз файла .txt размером 268 КБ, который мы должны расшифровать:
r (8Of%?.) d * Ya | V? qS & @ m $! wJKzfpu \ CdQbir * 80dB * J) 6znu/ gFf%, C = uu /: DP_, K @ 3'6]) [eu = # y ^ + {WKK3k2N IOWwmW, H.0iF +! + J / '/ - T' DQQg0N 2o71cRZ67X q! = dJ0s ~ ldq6}a {-QC \ H "{s @] ptRqU} A8y ~ gRHlf" @ .H] bwXk | ~ e <} SBl5mqsNAa $ SA-! 3-Bf, ^ ~ # x / sQzpJC) .6a; '$ (вечера.bsU ^ J ~ "(K @ |% NPIjr + KVw | 3G0 $ Vx {% 7Au # w \ $ <~ Wk @ K%] eIba} h3Yd koT! 7 + Q & ~ YnP {vX $ i29IeIE.d |? \ RL6Uf0lc7wy; "Pe </p>