1

如果我们有一个使用 3Des 和 64 位编码的编码文本,那么拥有加密密钥就足够了吗?我们还需要什么信息。

我试过了,我遇到了以下错误。

javax.crypto.BadPaddingException:给定最终块未正确填充

4

1 回答 1

1
  1. DES、3DES 和 AES 等都是块密码,这意味着它们的输入数据必须是块大小的精确倍数(DES 中为 8 字节)。要么确保数据始终是块大小的倍数,要么使用填充、PKCS#5 添加和删除填充字节以实现块倍数要求。
  2. 不要使用 3DES,它已被 AES 取代,对于新工作来说不够安全。
  3. 3DES 是 168 位密钥(24 字节),有时为了兼容性,使用 112 位密钥(16 字节)。最初对字节进行奇偶校验,每个字节中只有 7 位数据,奇偶校验通常不再进行,但仍然只使用每个字节的低 7 位。
  4. 最好提供精确尺寸的钥匙。
  5. 您应该在 CBC 模式下使用带有随机 IV 的 AES。
  6. 如果您使用的是字符串密钥,可能是用户提供的),您应该使用 PBKDF2 派生正确的长度密钥。
  7. 消息认证 MAC 也是一个好主意。
于 2016-03-23T04:10:35.413 回答