Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 计算Caesar密码的明文和密文之间的距离_Java_Encryption_Caesar Cipher - Fatal编程技术网

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;
}