【问题标题】:Use openssl_encrypt to replace Mcrypt for 3DES-ECB encryption使用 openssl_encrypt 替换 Mcrypt 进行 3DES-ECB 加密
【发布时间】:2017-01-20 21:02:29
【问题描述】:

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

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

现在我想使用openssl_encrypt对其进行加密,但我在openssl_get_cipher_methods()列表中没有找到des3-ecb

【问题讨论】:

  • 仅供参考,您应该使用 AES 而不是任何形式的 DES。

标签: php encryption php-openssl ecb


【解决方案1】:

现在我想使用openssl_encrypt对其进行加密,但我在openssl_get_cipher_methods()列表中没有找到des3-ecb

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


切勿使用ECB mode。它是确定性的,因此在语义上不安全。您至少应该使用像CBCCTR 这样的随机模式。最好对您的密文进行身份验证,以免像padding oracle attack 这样的攻击是不可能的。这可以通过 GCM 或 EAX 等认证模式或encrypt-then-MAC 方案来完成。

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

【讨论】:

    猜你喜欢
    • 2018-08-29
    • 2020-06-23
    • 1970-01-01
    • 1970-01-01
    • 2015-03-11
    • 2016-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多