Сериозно, НЕ ИЗПОЛЗВАЙТЕ aes_encrypt() на MySQL Това е най-несигурният метод за използване на блоков шифър. Използва режим ECB и мога да дам прост пример с демонстрация защо това е сериозна грешка.
Обикновен текстово съобщение:
Същото съобщение, криптирано с режим ECB (няма значение какъв шифър използвате):
ТОЧНО същото съобщение при използване на режим CBC (отново, няма значение какъв шифър използвате):
Има още повече причини да не използвате aes_encrypt на mysql, най-вече всяка отделна заявка, която изпращате, ще има и ключа aes, който използвате. Ако базата данни е компрометирана, нападателят ще активира регистриране и просто ще получи вашия aes ключ и ще декриптира цялата база данни .
И така, какво трябва ти използваш? Харесвам този клас за момента. Използва режим CBC с функция String2Key и IV. Можете да използвате първичния ключ като своя IV, всяко съобщение трябва да има уникален IV. Всичко е наред, ако нападателят знае IV и ако те са последователни, стига реализацията на блоковия шифър да е сигурна. Повторното използване на IV направи WEP много по-малко сигурен .