Как уже указывал oggy, вы должны создать уникальный IV и добавить его в каждый файл cookie. Для создания уникального IV / dev / urandom недостаточно, поскольку возможно, что он сгенерирует один и тот же IV для двух отдельных файлов cookie.
Несмотря на то, что я не эксперт, я думаю, что один действительный метод для создания уникального IV - это шифрование счетчика, который увеличивается для каждого cookie, с ключом, который не совпадает с ключом, используемым для шифрования данных cookie. с.
Добавлено намного позже:
Есть еще одна причина, о которой я только подумал позже, почему не очень хорошая идея использовать / dev / (u) случайным образом исключительно для IV в сценарии, который описал OP. В man-странице random (4) говорится, что пользователи должны быть экономными в использовании / dev / urandom, иначе они могут ухудшить качество случайности для других пользователей устройства. Поскольку количество прочитанных данных пропорционально клиентским запросам, вы должны предположить, что в сценарии ОП в конечном итоге будет прочитано большое количество случайностей.
Генераторы ключей, вероятно, будут читать из / dev / random, что блокирует, но у других более законных пользователей этих устройств (больше интересующихся случайностью) их случайность будет ухудшена. Ну, блокировать генераторы ключей тоже не очень хорошо.
Итак, поскольку OP не хочет сильно зависеть от сторонних библиотек, он может повторно использовать функции шифрования AES, используя их в режиме счетчика, как я обрисовал выше (также в статье в Википедии под заголовок Проекты на основе криптографических примитивов .