首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在php中使用AES-256-CBC对数据进行正确的身份验证?

如何在php中使用AES-256-CBC对数据进行正确的身份验证?
EN

Stack Overflow用户
提问于 2016-01-22 20:02:42
回答 2查看 796关注 0票数 2

我一直在使用openssl函数在php中使用AES-256-CBC加密数据。对于每一次新的加密,我都能够使用唯一的IV (用openssl_random_pseudo_bytes生成)来加密。

但是,我正在为使用aes cbc认证加密的想法而奋斗。当我要解密数据时,我如何进行基本身份验证?

我需要使用像PBKDF2、河豚或hash_hmac()这样的东西吗?

我需要用什么方法破解钥匙吗?

任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

发布于 2016-01-22 20:32:27

简单的解决方案,使用可用于php和许多其他语言的RNCryptor。有关实现细节,请参阅此ReadMe

即使不使用RNCryptor,这些方法也是正确和安全的。

网站的一些细节:

  • AES-256加密
  • CBC模式
  • 用PBKDF2扩展密码
  • 密码盐析
  • 随机IV
  • 加密散列HMAC
  • 版本化
票数 1
EN

Stack Overflow用户

发布于 2016-01-23 22:56:28

但是,我正在为使用aes cbc认证加密的想法而奋斗。当我要解密数据时,我如何进行基本身份验证?

使用随机IV加密数据后,使用第二个密钥将密文和IV都放入hash_hmac()中。

如果您因为需要部署到生产中而问这个问题,请等到defuse/php-加密的第2版发布后再使用它。(它是AES-256-CTR而不是AES-256- CBC,但CTR模式比CBC模式有更少的攻击面;也就是说,如果击败HMAC,就不会有填充的甲骨文攻击。)

不要使用RNCryptor。

RNCryptor既不是按照密码编码标准写的,也不是用PHP写的,也不是用Python写的。

RNCryptor字面意思是一致的违反密码编码标准的规则1。可能还有其他尚未被发现的问题。如果您希望跨语言的可移植性,使用利伯钠

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34954998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档