PHP Warning: openssl_encrypt(): IV passed is 16 bytes long which is longer than the 0 expected by selected cipher
PHP Warning: openssl_encrypt(): IV passed is 16 bytes long which is longer than the 0 expected by selected cipher
1 回答4.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答579 阅读✓ 已解决
789 阅读
不同的加密算法需要不同的初始化向量(IV),也就是
openssl_encrypt
的第 5 个参数$iv
:看错误信息,你用的加密算法是不需要初始化向量的(多半是不安全的 ECB 模式),不传
$iv
就可以了。不同算法需要的IV长度可以通过
openssl_cipher_iv_length
获取:结果:
知道长度之后用
random_bytes
对应生成长度的 iv 就可以了。(有些算法对 iv 还有特殊的要求,例如 AES-GCM 需要保证唯一,但不要求随机)