【问题标题】:Why does generateKey method from DES algorithm multiply the key by 8?为什么 DES 算法中的 generateKey 方法将密钥乘以 8?
【发布时间】:2015-04-12 08:36:30
【问题描述】:

我在对应的行需要一些解释,我不明白:

KeyGenerationParameters kgp = new KeyGenerationParameters(sr,(DESParameters.DES_KEY_LENGTH) * 8);

如果我有数字 6 而不是 8,它会停止工作吗?

【问题讨论】:

  • 您是否阅读过 javadoc 以了解您提到的课程? bouncycastle.org/docs/docs1.5on/org/bouncycastle/crypto/… 使用位作为长度单位。
  • 如果...会停止工作”:你为什么不试试这个操作?
  • 可能是因为常量是按字节定义的,而KeyGenerationParameters 类希望它按

标签: java bouncycastle des encryption-symmetric


【解决方案1】:

它乘以 8,否则它是以字节为单位的。代码需要位。

【讨论】:

    【解决方案2】:

    strength - 我们想要生成的密钥的大小(以位为单位)。

    它来自于 KeyGenerationParameters 的 javadoc。 DSPAParameters.DES_KEY_LENGTH 存储值 8(以字节为单位的 DES 密钥长度),但 KeyGenerationParameters 需要以位为单位的密钥长度。在 KeyGenerationParameters 的情况下,8 字节 * 8 = 64 位。你可以只输入常量值 64。

    此类可用于任何算法的随机密钥生成,例如,要生成 DES 密钥,您必须使用值 64,生成 3DES 密钥 128 或 192。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      • 1970-01-01
      • 2016-07-17
      相关资源
      最近更新 更多