为什么我的变量在这个例子中改变长度?

时间:2016-12-21 15:59:46

标签: php encryption openssl base64 php-openssl

我正在尝试加密和解密一个值。我的例子有时会起作用,但我得到的大部分时间都是:

  

openssl_decrypt():传递的IV长度为20个字节,长度超过   16选择密码预期,截断

这是我的两种方法:

加密

public function encrypt(string $value)
{
    $iv = random_bytes(16);

    $encrypted = openssl_encrypt($value, $this->cipher, $this->key, 0, $iv);

    return base64_encode($encrypted . '/' . $iv);
}

解密

public function decrypt(string $payload)
{
    $payload = base64_decode($payload);

    list($payload, $iv) = explode('/', $payload);

    $decrypted = openssl_decrypt($payload, $this->cipher, $this->key, 0, $iv);

    return $decrypted;
}

解密后,$iv变量的长度发生了变化。谁能告诉我为什么会这样?每当我转储随机字节输出时,我有时会得到无法呈现的奇怪字符。

有人能指出我正确的方向,所以我可以解决这个问题吗?

干杯。

0 个答案:

没有答案