我有一个 mycrypt 的加密方法,密码是3des
,模式ecb
:
mcrypt_module_open ( MCRYPT_3DES, '', 'ecb', '' )
现在我想用 加密它openssl_encrypt
,但我没有des3-ecb
在openssl_get_cipher_methods()
列表中找到。
我有一个 mycrypt 的加密方法,密码是3des
,模式ecb
:
mcrypt_module_open ( MCRYPT_3DES, '', 'ecb', '' )
现在我想用 加密它openssl_encrypt
,但我没有des3-ecb
在openssl_get_cipher_methods()
列表中找到。
现在我想加密它使用
openssl_encrypt
,我没有des3-ecb
在openssl_get_cipher_methods()
列表中找到。
是des-ede3
。使用分组密码的对称加密需要某种操作模式。如果您浏览列表,您会看到类似des-ede3
、des-ede3-cbc
和des-ede3-cfb
的内容des-ede3-ofb
。CBC、CFB 和 OFB 都是命名的,未命名的密码必须是唯一的其他常见操作模式:ECB。
永远不要使用ECB 模式。它是确定性的,因此在语义上不安全。您至少应该使用CBC或CTR之类的随机模式。最好对您的密文进行身份验证,这样就不会发生像填充预言攻击这样的攻击。这可以通过 GCM 或 EAX 等认证模式或encrypt-then-MAC方案来完成。
现在不要使用三重 DES。即使您使用 192 位的最大密钥大小,它也最多只能提供 112 位的安全性。如果使用较短的密钥大小,则它仅提供 56 或 57 位的安全性。AES 会更快(处理器具有特殊的 AES-NI 指令集),并且使用 128 位的最低密钥大小甚至更安全。3DES 的最大密文大小也有实际限制。请参阅3DES 和 AES 的安全性比较。