2

我有一个 mycrypt 的加密方法,密码是3des,模式ecb

mcrypt_module_open ( MCRYPT_3DES, '', 'ecb', '' )

现在我想用 加密它openssl_encrypt,但我没有des3-ecbopenssl_get_cipher_methods()列表中找到。

4

1 回答 1

10

现在我想加密它使用openssl_encrypt,我没有des3-ecbopenssl_get_cipher_methods()列表中找到。

des-ede3。使用分组密码的对称加密需要某种操作模式。如果您浏览列表,您会看到类似des-ede3des-ede3-cbcdes-ede3-cfb的内容des-ede3-ofb。CBC、CFB 和 OFB 都是命名的,未命名的密码必须是唯一的其他常见操作模式:ECB。


永远不要使用ECB 模式。它是确定性的,因此在语义上不安全。您至少应该使用CBCCTR之类的随机模式。最好对您的密文进行身份验证,这样就不会发生像填充预言攻击这样的攻击。这可以通过 GCM 或 EAX 等认证模式或encrypt-then-MAC方案来完成。

现在不要使用三重 DES。即使您使用 192 位的最大密钥大小,它也最多只能提供 112 位的安全性。如果使用较短的密钥大小,则它仅提供 56 或 57 位的安全性。AES 会更快(处理器具有特殊的 AES-NI 指令集),并且使用 128 位的最低密钥大小甚至更安全。3DES 的最大密文大小也有实际限制。请参阅3DES 和 AES 的安全性比较

于 2016-09-13T17:56:15.003 回答