返回值是以字节为单位的长度。(而不是位,或其他任何单位。)
(PHP 5 >= 5.3.3, PHP 7, PHP 8)
openssl_cipher_iv_length — 获取密码初始化向量 (IV) 长度
cipher_algo
密码方法,参见 openssl_get_cipher_methods() 获取可用值的列表。
成功时返回密码长度,失败时返回 false
。
当密码算法未知时,发出 E_WARNING
级别的错误。
示例 #1 openssl_cipher_iv_length() 示例
<?php
$method = 'AES-128-CBC';
$ivlen = openssl_cipher_iv_length($method);
echo $ivlen;
?>
以上示例将输出类似以下内容
16
<?php
$ciphers = openssl_get_cipher_methods();
//应避免使用ECB模式
$ciphers = array_filter($ciphers, function ($n) {
return stripos($n, "ecb") === FALSE;
});
//至少在2016年8月之前,Openssl声明以下算法较弱:RC2、RC4、DES、3DES、基于MD5的算法
$ciphers = array_filter($ciphers, function ($c) {
return stripos($c, "des") === FALSE;
});
$ciphers = array_filter($ciphers, function ($c) {
return stripos($c, "rc2") === FALSE;
});
$ciphers = array_filter($ciphers, function ($c) {
return stripos($c, "rc4") === FALSE;
});
$ciphers = array_filter($ciphers, function ($c) {
return stripos($c, "md5") === FALSE;
});
if (is_array($ciphers)) {
foreach ($ciphers as $cipher) {
echo $cipher.': ';
echo openssl_cipher_iv_length($cipher);
echo "<br>\n";
}
}
?>
将是……
AES-xxx-xxx 为 16
BF-xxx 为 8
CAMELLIA-xxx 为 16
CAST5-xxx 为 8
IDEA-xxx 为 8
SEED-xxx 为 16
小写
aes-xxx-xxx 在 16 和 12 之间混合。
id-aes-xxx 在 12 和 8 之间混合。
以上值是在 Windows 上使用 PHP 5.5 - 5.6 测试的。在 PHP 7.x 中与这不同。