• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • openssl_cipher_iv_length()

    (PHP 5 >= 5.3.3, PHP 7)

    获取密码iv长度

    说明

    openssl_cipher_iv_length(string $method): int

    获取密码初始化向量(iv)长度。

    参数

    $method

    密码的方法,更多值查看openssl_get_cipher_methods()函数。

    返回值

    成功,返回密码长度,失败返回FALSE.

    错误/异常

    当密码方法未知时,抛出一个E_WARNING级的错误。

    范例

    openssl_cipher_iv_length()范例

    <?php
    $method = 'AES-128-CBC';
    $ivlen = openssl_cipher_iv_length($method);
    echo $ivlen;
    ?>
    

    以上例程的输出类似于:

    16
    
    The return value is a length in bytes. (Not bits, or anything else.)
    <?php
    $ciphers = openssl_get_cipher_methods();
    //ECB mode should be avoided
    $ciphers = array_filter($ciphers, function ($n) {
      return stripos($n, "ecb") === FALSE;
    });
      
    // At least as early as Aug 2016, Openssl declared the following weak: RC2, RC4, DES, 3DES, MD5 based
    $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";
      }
    }
    ?>
    Will be...
    AES-xxx-xxx is 16
    BF-xxx is 8
    CAMELLIA-xxx is 16
    CAST5-xxx is 8
    IDEA-xxx is 8
    SEED-xxx is 16
    lower case:
    aes-xxx-xxx are mixed between 16 and 12.
    id-aes-xxx are mixed between 12 and 8.
    The values above are tested with PHP 5.5 - 5.6 on Windows. In PHP 7.x is different than this.