Я изучаю шифрование и используя openssl_encrypt в PHP. У меня есть шифрование и дешифрование, работающие с 2 функциями, соответственно. Я просто передаю данные для шифрования/дешифрования и уникальный идентификатор, который принадлежит пользователю. Функция возвращает зашифрованные/дешифрованные данные.Является ли вектор инициализации необходимым, если вы используете разные ключи для каждого зашифрованного набора данных?
Когда функция вызывается, я получаю предупреждение об ошибке 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);
}
Функция расшифровки почти идентична, за исключением того, что она расшифровывает и возвращает данные.
Обратите внимание, что я объединяю глобальный ключ шифрования с уникальным идентификатором пользователя для создания комбинированного ключа. Это гарантирует, что ключ для каждого пользователя уникален. Следовательно, это также должно гарантировать, что зашифрованные данные также уникальны для отдельных пользователей, даже если незашифрованные значения идентичны, правильно? Если да, то в этом случае необходимо IV? Есть ли преимущество по-прежнему использовать IV или недостаток, чтобы не использовать здесь IV?
Благодарим за подробное объяснение! – SudoKill