使用openssl_encrypt代替Mcrypt进行3DES-ECB加密

Use openssl_encrypt to replace Mcrypt for 3DES-ECB encryption

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

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

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

now I want to encrypt it use openssl_encrypt, and I did not find des3-ecb in openssl_get_cipher_methods() list.

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


切勿使用 ECB mode. It's deterministic and therefore not semantically secure. You should at the very least use a randomized mode like CBC or CTR. It is better to authenticate your ciphertexts so that attacks like a padding oracle attack are not possible. This can be done with authenticated modes like GCM or EAX, or with an encrypt-then-MAC 方案。

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