openssl_cipher_iv_length

(PHP 5 >= 5.3.3, PHP 7, PHP 8)

openssl_cipher_iv_length获取密码 IV 长度

描述

openssl_cipher_iv_length(string $cipher_algo): int|false

获取密码初始化向量 (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
添加注释

用户贡献的注释 2 个注释

Tim Hunt
9 年前
返回值是以字节为单位的长度。(而不是位,或者其他任何东西。)
Vee W.
6 年前
<?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 中与之不同。
To Top