首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >3DES关键组件

3DES关键组件
EN

Stack Overflow用户
提问于 2015-01-13 20:12:09
回答 4查看 8.9K关注 0票数 3

我需要使用3DES加密/解密数据。与我分享的密钥的形式是;

组件1=111111111111111111111111111111111111111111

组件2=222222222222222222222222222222222222222222

KVC = ABCD1234

我需要从上面的组件创建3DES密钥,或者K1,k2,k3子密钥,

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

请分享创建3DES密钥的步骤。

EN

回答 4

Stack Overflow用户

发布于 2015-05-23 19:14:42

使用HexStringToByte标准方法将清除的分量转换为字节数组。将3字节数组传递给下面的方法。你可以在http://www.emvlab.org/keyshares/上验证你的结果。以下是示例数据:

key

  • cc1: 447FC2AA6EFFFEE5405A559E88DC958C

  • cc2: 1086F0493DB0EFE42EDF1BC99541E96F

  • cc3: 853F31351E51CD9C5222C28E408BF2A3

  • result key kvc: 1E49C1

代码语言:javascript
复制
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;
}
票数 7
EN

Stack Overflow用户

发布于 2015-05-14 03:13:16

  1. 将十六进制字符串转换为字节数组。32个字符将给你16个字节
  2. 3DES需要3个8字节的密钥,所以它需要24个字节。但是,第一个和第三个密钥可以是相同的。因此,您需要通过将前8个字节复制到末尾来将数组扩展到24个字节。此24字节数组是您可以用于加密和解密的结果密钥。
  3. No to check you key -使用您的密钥加密字符串'0000000000000000‘(8个零字节或16个零十六进制字符)。编码结果的开头必须等于您的KCV。
票数 1
EN

Stack Overflow用户

发布于 2017-08-15 03:51:41

我也有同样的问题。继续上面的示例,您有两个关键组件:

组件1=11111111111111111111111111111111111111111111

组件2=222222222222222222222222222222222222222222

你必须添加第三个组件,因为你没有它,它将是零

组件3=000000000000000000000000000000000000

现在使用@Slav提供的方法,这将为您提供真正的主密钥。

代码语言:javascript
复制
byte[] masterKey = buildKey (component1, component2, component3) ; remember those values has to be in hexa. 

现在让我们假设您有一个加密值,您将按如下方式解密它:

代码语言:javascript
复制
byte[] plainValue = tripleDESDecrypt (encryptedValue, masterKey); 

如果您需要更多的详细信息,请联系我发送java文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27921915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档