三重 DES Java 不工作
Triple DES Java not working
我正在使用这个程序代码 Programs code full,但我不明白为什么我的 Triple DES 不能工作。我如何以及尝试了什么?
我添加了 3 个键输入(以及键位数组),我将使用它们来加密十六进制并转换它们:
String keyy1 = new Scanner(System.in).nextLine();
int keyBitstriple1[] = new int[64];
for(int i=0 ; i < 14 ; i++) {
String s = Integer.toBinaryString(Integer.parseInt(keyy1.charAt(i) + "", 16));
while(s.length() < 4) {
s = "0" + s;
}
for(int j=0 ; j < 4 ; j++) {
keyBitstriple1[(4*i)+j] = Integer.parseInt(s.charAt(j) + "");
}
}
然后我加密了hexa:
System.out.println("1st encrypt");
int outputBits[] = permute(inputBits, keyBitstriple1, false);
int outputBits2[] = Arrays.copyOf(outputBits, outputBits.length);
System.out.println("-----------------------------------------------------------");
System.out.println("2nd enrypt");
int outputBits3[] = permute(outputBits2, keyBitstriple2, false);
int outputBits4[] = Arrays.copyOf(outputBits3, outputBits3.length);
System.out.println("-----------------------------------------------------------");
System.out.println("3rd enrypt");
int outputBits5[] = permute(outputBits4, keyBitstriple3, false);
);
int outputBits6[] = Arrays.copyOf(outputBits5, outputBits5.length);
//a copy of end encrypt
加密完全正确,即使我用在线DES加密软件检查结果也是一样。
然后我将最终加密保存在 outputBits6 中,并让用户再输入 3 个密钥来解密加密文本。 同第一步
String keyy4 = new Scanner(System.in).nextLine();
String keyy5 = new Scanner(System.in).nextLine();
String keyy6 = new Scanner(System.in).nextLine();
然后我用第一个用户输入的密钥来解密十六进制文本。 (outputbits6)
System.out.println("-----------------------------------------------------------");
System.out.println("First decrypt");
int outputBits7[] = permute(outputBits6, keyBitstriple4, true);
System.out.println("-----------------------------------------------------------");
System.out.println("2nd decrypt");
int outputBits8[] = permute(outputBits7, keyBitstriple5, true);
System.out.println("-----------------------------------------------------------");
System.out.println("3rd decrypt");
int outputBits9[] = permute(outputBits8, keyBitstriple6, true);
每次解密都是错误的,我不知道为什么,但加密是正确的。 MY FULL CODE
提前致谢。
缺少的一点是,通常3DES加密是ede
:用第一个密钥加密,用第二个密钥解密,用第三个密钥加密。反向ded
解密
我正在使用这个程序代码 Programs code full,但我不明白为什么我的 Triple DES 不能工作。我如何以及尝试了什么?
我添加了 3 个键输入(以及键位数组),我将使用它们来加密十六进制并转换它们:
String keyy1 = new Scanner(System.in).nextLine(); int keyBitstriple1[] = new int[64]; for(int i=0 ; i < 14 ; i++) { String s = Integer.toBinaryString(Integer.parseInt(keyy1.charAt(i) + "", 16)); while(s.length() < 4) { s = "0" + s; } for(int j=0 ; j < 4 ; j++) { keyBitstriple1[(4*i)+j] = Integer.parseInt(s.charAt(j) + ""); } }
然后我加密了hexa:
System.out.println("1st encrypt"); int outputBits[] = permute(inputBits, keyBitstriple1, false); int outputBits2[] = Arrays.copyOf(outputBits, outputBits.length); System.out.println("-----------------------------------------------------------"); System.out.println("2nd enrypt"); int outputBits3[] = permute(outputBits2, keyBitstriple2, false); int outputBits4[] = Arrays.copyOf(outputBits3, outputBits3.length); System.out.println("-----------------------------------------------------------"); System.out.println("3rd enrypt"); int outputBits5[] = permute(outputBits4, keyBitstriple3, false); ); int outputBits6[] = Arrays.copyOf(outputBits5, outputBits5.length); //a copy of end encrypt
加密完全正确,即使我用在线DES加密软件检查结果也是一样。
然后我将最终加密保存在 outputBits6 中,并让用户再输入 3 个密钥来解密加密文本。 同第一步
String keyy4 = new Scanner(System.in).nextLine(); String keyy5 = new Scanner(System.in).nextLine(); String keyy6 = new Scanner(System.in).nextLine();
然后我用第一个用户输入的密钥来解密十六进制文本。 (outputbits6)
System.out.println("-----------------------------------------------------------"); System.out.println("First decrypt"); int outputBits7[] = permute(outputBits6, keyBitstriple4, true); System.out.println("-----------------------------------------------------------"); System.out.println("2nd decrypt"); int outputBits8[] = permute(outputBits7, keyBitstriple5, true); System.out.println("-----------------------------------------------------------"); System.out.println("3rd decrypt"); int outputBits9[] = permute(outputBits8, keyBitstriple6, true);
每次解密都是错误的,我不知道为什么,但加密是正确的。 MY FULL CODE
提前致谢。
缺少的一点是,通常3DES加密是ede
:用第一个密钥加密,用第二个密钥解密,用第三个密钥加密。反向ded
解密