我需要使用3DES加密/解密数据。与我分享的密钥的形式是;
组件1=111111111111111111111111111111111111111111
组件2=222222222222222222222222222222222222222222
KVC = ABCD1234
我需要从上面的组件创建3DES密钥,或者K1,k2,k3子密钥,
我知道子键有16字节长,但是它们是32字节长。
请分享创建3DES密钥的步骤。
发布于 2015-05-23 19:14:42
使用HexStringToByte标准方法将清除的分量转换为字节数组。将3字节数组传递给下面的方法。你可以在http://www.emvlab.org/keyshares/上验证你的结果。以下是示例数据:
key
public static byte[] buildKey(byte[] cc1, byte[] cc2, byte[] cc3) {
byte[] result = new byte[cc1.length];
int i = 0;
for (byte b1: cc1) {
byte b2 = cc2[i];
byte b3 = cc3[i];
result[i] = (byte)(b1 ^ b2 ^ b3);
i++;
}
return result;
}发布于 2015-05-14 03:13:16
发布于 2017-08-15 03:51:41
我也有同样的问题。继续上面的示例,您有两个关键组件:
组件1=11111111111111111111111111111111111111111111
组件2=222222222222222222222222222222222222222222
你必须添加第三个组件,因为你没有它,它将是零
组件3=000000000000000000000000000000000000
现在使用@Slav提供的方法,这将为您提供真正的主密钥。
byte[] masterKey = buildKey (component1, component2, component3) ; remember those values has to be in hexa. 现在让我们假设您有一个加密值,您将按如下方式解密它:
byte[] plainValue = tripleDESDecrypt (encryptedValue, masterKey); 如果您需要更多的详细信息,请联系我发送java文件。
https://stackoverflow.com/questions/27921915
复制相似问题