Недавно я пытался разработать функцию обмена призов. Пользователь получит зашифрованный текст, а сервер расшифрует этот текст, чтобы знать, что ему дать.
Дело в том, что я не совсем понимаю, как iv (вектор инициализации) в crypto.createCipheriv
& crypto.createDecipheriv
работает.
Насколько я понимаю, iv
служит средством для достижения некоторой степени случайности, чтобы мы могли снизить вероятность взлома с помощью один и тот же ключ и алгоритм шифрования / дешифрования постоянно.
Моя проблема в том, должен ли я использовать один и тот же iv
как на этапе шифрования, так и дешифрования? То есть, когда сервер выдал зашифрованные данные, должен ли он сохранять iv при создании шифра и использовать то же значение для последующего дешифрования? Что касается HTTP-запроса, если шифрование и дешифрование происходит в другом запросе, должен ли сервер сохранять iv
в запросе шифрования и извлекать его в последующем запросе дешифрования?