为什么在openssl_encrypt中使用不同的输入会得到相同的结果

时间:2019-12-18 11:55:04

标签: php encryption

我正在尝试在PHP中使用openssl_encrypt加密行数据。

我想对同一行的所有数据使用相同的IV(因为我只想每行保存一个IV)。但是,当我尝试加密时,使用单个IV会得到不同输入的相同结果。

例如,我得到两个变量“ username”和“ image”,并尝试使用一个IV对其进行加密,但是结果从两个不同的输入(用户名,图像)返回相同的字符串。我该如何解决?

我的代码:     

function encrypt($plaintext,$iv): string{

    //echo $iv."\n";
    $ciphertext_raw = openssl_encrypt($plaintext, $cipher, $key, $options=OPENSSL_RAW_DATA, $iv);
    $hmac = hash_hmac('sha256', $ciphertext_raw, $key, $as_binary=true);
    $ciphertext = base64_encode( $iv.$hmac.$ciphertext_raw );
    return $ciphertext;
}?>

0 个答案:

没有答案