Encryption 3DES关键组件

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加密/解密数据。与我共享的钥匙是以下形式的:

组件1=11111111111111111111

组件2=22222222

KVC=ABCD1234

我需要从上述组件或K1、k2、k3子关键点创建3DES关键点

我知道子键有16字节长,但是它们有32字节长


请分享创建3DES密钥的过程。

只需使用EFT计算器,可通过以下链接下载: 只需对所有组件进行异或运算,就可以获得3DES密钥。要验证结果,只需使用相同的计算器和生成的XORed密钥加密“0000000000000000”。您将获得密钥检查值(KCV)作为结果

您有32字节长的十六进制字符串表示的3DES键。将此字符串压缩为字节将得到16个“是”(1字节==字符串的2个十六进制字符)

  • 将十六进制字符串转换为字节数组。32个字符将为您提供16个字节
  • 3des需要3个8字节的键,因此需要24字节。但是,第一个键和第三个键可以相同。因此,您需要通过将前8个字节复制到末尾,将数组扩展到24个字节。此24字节数组是可用于加密和解密的结果密钥
  • 否检查您的密钥-使用您的密钥加密字符串“0000000000000000”(8个零字节或16个零十六进制字符)。编码结果的开头必须等于您的KCV

  • 使用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字节。有一个在线密钥。