Encryption 3DES关键组件
我需要使用3DES加密/解密数据。与我共享的钥匙是以下形式的: 组件1=11111111111111111111 组件2=22222222 KVC=ABCD1234 我需要从上述组件或K1、k2、k3子关键点创建3DES关键点 我知道子键有16字节长,但是它们有32字节长Encryption 3DES关键组件,encryption,3des,tripledes,Encryption,3des,Tripledes,我需要使用3DES加密/解密数据。与我共享的钥匙是以下形式的: 组件1=11111111111111111111 组件2=22222222 KVC=ABCD1234 我需要从上述组件或K1、k2、k3子关键点创建3DES关键点 我知道子键有16字节长,但是它们有32字节长 请分享创建3DES密钥的过程。只需使用EFT计算器,可通过以下链接下载: 只需对所有组件进行异或运算,就可以获得3DES密钥。要验证结果,只需使用相同的计算器和生成的XORed密钥加密“0000000000000000”。您将
请分享创建3DES密钥的过程。只需使用EFT计算器,可通过以下链接下载: 只需对所有组件进行异或运算,就可以获得3DES密钥。要验证结果,只需使用相同的计算器和生成的XORed密钥加密“0000000000000000”。您将获得密钥检查值(KCV)作为结果 您有32字节长的十六进制字符串表示的3DES键。将此字符串压缩为字节将得到16个“是”(1字节==字符串的2个十六进制字符)
使用HexStringToByte标准方法将清除组件转换为字节数组。将3字节数组传递给下面的方法。您可以在上验证您的结果。以下是示例数据:
- cc1:447FC2AA6Effee5405A559E88DC958C
- cc2:1086F0493DB0EFE42EDF1BC99541E96F
- cc3:D1C603D64D1EDC9D3CA78CD95D168E40
- 结果键:853F31351E51CD9C5222C28E408BF2A3
- 结果键kvc:1E49C1
公共静态字节[]构建密钥(字节[]cc1,字节[]cc2,字节[]cc3){
字节[]结果=新字节[cc1.length];
int i=0;
用于(字节b1:cc1){
字节b2=cc2[i];
字节b3=cc3[i];
结果[i]=(字节)(b1^b2^b3);
i++;
}
返回结果;
}
我也有同样的问题。
继续上面的示例,您有两个关键组件:
组件1=11111111111111111111
组件2=22222222
您必须添加第三个组件,因为您没有它,它将是零
组件3=00000000000000000000
现在使用@Slav提供的方法,这将为您提供真正的主密钥
byte[] masterKey = buildKey (component1, component2, component3) ; remember those values has to be in hexa.
现在,假设您有一个加密值,您将按如下方式对其进行解密:
byte[] plainValue = tripleDESDecrypt (encryptedValue, masterKey);
如果您需要更多详细信息,请与我联系发送java文件。确实没有足够的信息来理解您提供的数据。只需要用于将组件转换为密钥的过程/算法。在处的联机密钥生成器与我的KCV值不匹配通常在2TDEA、2键3DES中,第一个和最后8个字节是相同的。是的,您是对的,但这是用于密钥的。我们这里有的是构成XOR的组件,我们将拥有关键。如果生成的密钥是16个字节,那么我们将添加要附加到密钥的前8个字节。通常这在.net的TripleDes实现中自动完成“通常这在.net的TripleDes实现中自动完成”是的,通常但不总是在不同的实现中。这将是对答案的极大补充。提供完整的24字节密钥确实更好,没有歧义,而且实现不可知。。这个问题不清楚值是什么,大整数,ASCII字符,十六进制编码的二进制。您已经做出了一个普遍有效的选择,它们是十六进制的,这似乎是正确的。这没有意义,十六进制中的cc1、cc2和cc3各有16个字节。3DES完整密钥是24字节。如何像这样解密?注意:3DES密钥是24字节。有一个在线密钥。