PHP openssl_encrypt的错误原因是什么?
PHP Warning: openssl_encrypt(): IV passed is 16 bytes long which is longer than the 0 expected by selected cipher
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不同的加密算法需要不同的初始化向量(IV),也就是
openssl_encrypt
的第 5 个参数$iv
:看错误信息,你用的加密算法是不需要初始化向量的(多半是不安全的 ECB 模式),不传
$iv
就可以了。不同算法需要的IV长度可以通过
openssl_cipher_iv_length
获取:结果:
知道长度之后用
random_bytes
对应生成长度的 iv 就可以了。(有些算法对 iv 还有特殊的要求,例如 AES-GCM 需要保证唯一,但不要求随机)传的加密向量值有问题,长度是2的次方
随便打16个字符传进去