我正在学习加密并在 PHP 中使用 openssl_encrypt。我分别使用 2 个函数进行加密和解密。我只是传递要加密/解密的数据,以及属于用户的唯一 ID。该函数返回加密/解密的数据。
调用该函数时,我收到一条 PHP 警告,提示“openssl_encrypt():使用空的初始化向量 (iv) 可能不安全且不推荐”。
我已经阅读了一些关于 IV 的内容,并试图了解在这种情况下是否需要 IV,如果我为每个加密数据集使用唯一密钥:
我的加密功能是这样设置的:
function EncryptData($inputString,$uniqueID)
{
global $encryptKey; // Pulls out encryption key stored in a separate file
$method = 'aes256'; //Encryption Method
return openssl_encrypt($inputString,$method,$encryptKey.$uniqueID);
}
解密函数几乎相同,只是它改为解密并返回数据。
请注意,我将全局加密密钥与用户的唯一 ID 组合在一起以生成组合密钥。这确保了每个用户的密钥都是唯一的。因此,这也应该确保加密数据对于不同的用户也是唯一的,即使未加密的值是相同的,对吗?如果是这样,那么在这种情况下是否需要静脉注射?仍然使用 IV 是否有优势或不使用 IV 的劣势?