Java 计算Caesar密码的明文和密文之间的距离
我有这样一个文本文件:Java 计算Caesar密码的明文和密文之间的距离,java,encryption,caesar-cipher,Java,Encryption,Caesar Cipher,我有这样一个文本文件: GASDGHSDH BVNYBCNYC HDFS UQSF CXVN KFDV SHDF APLN HDSFHS OKZMOZ SAH YGN DSHF HWLJ REEW TGGY SGDFH AOLNP DHSF EITG GSDHASD IUFJCUF DHFSDF KOMZKM DSFH SHUW 我不知道解密密钥。例如: HDFS UQSF 键==13 因为U-H==13 嗯。我写代码: public static int codeJC(String firs
GASDGHSDH BVNYBCNYC
HDFS UQSF
CXVN KFDV
SHDF APLN
HDSFHS OKZMOZ
SAH YGN
DSHF HWLJ
REEW TGGY
SGDFH AOLNP
DHSF EITG
GSDHASD IUFJCUF
DHFSDF KOMZKM
DSFH SHUW
我不知道解密密钥。例如:
HDFS UQSF
键==13
因为U-H==13
嗯。我写代码:
public static int codeJC(String first, String twice){
first = first.toLowerCase();
twice = twice.toLowerCase();
char a = first.charAt(0);
char b = twice.charAt(0);
int r = 0;
if((a-b) >0){
r = a-b;
}else{
r = b-a;
}
return r;
}
但如果:
System.out.println(codeJC("Z", "A")); //this return 25 !?!?!?!?
System.out.println(codeJC("C", "F")); //this return good value
为什么aS、H和D是最常见的字母;其中一个可能是纯文本中的E(假设它是英文的)。好吧,这就是你在代码中写的,但是你期望什么呢?您是否希望看到
1
?每次文本都不一样,因为它们在文件中获取,我需要解密。我计算了此密钥,但不知道如何计算。'z'
的ASCII值为122,'a'
的ASCII值为97。由于您计算了'z'-'a'
(122-97),根据您的代码,25正是结果。您认为该值应该是多少?因此,如果一个文本是“ZZZZ”,第二个文本是“AAAAA”,那么它期望1虽然这可能提供正确的解决方案,但如果您能够解释为什么以及如何使用此代码段,那将是一件好事!我不知道它为什么有效,但为了有效,只需粘贴有问题的代码,为什么在减法之前加26?
if ((a - b) > 0) {
r = 26 - (a - b);
} else {
r = b - a;
}