Poważnie, NIE UŻYWAJ funkcji aes_encrypt() w MySQL Jest to najbardziej niepewna metoda korzystania z szyfru blokowego. Używa trybu EBC i mogę podać prosty przykład demonstracji, dlaczego jest to poważny błąd.
Zwykła wiadomość tekstowa:
Ta sama wiadomość zaszyfrowana w trybie ECB (nie ma znaczenia, jakiego szyfru użyjesz):
DOKŁADNA ta sama wiadomość w trybie CBC (ponownie, nie ma znaczenia, jakiego szyfru używasz):
Jest jeszcze więcej powodów nie używaj aes_encrypt mysql, przede wszystkim każde wysłane zapytanie będzie miało również klucz aes, którego używasz. Jeśli baza danych zostanie naruszona, atakujący włączy logowanie i po prostu zdobędzie klucz aes i odszyfruje całą bazę danych .
Więc co powinien używasz? Lubię ta klasa obecnie. Używa trybu CBC z funkcją String2Key i IV. Możesz użyć klucza podstawowego jako IV, każda wiadomość musi mieć unikalną IV. W porządku, jeśli atakujący zna IV i jeśli są one sekwencyjne, o ile implementacja szyfru blokowego jest bezpieczna. Ponowne użycie IV sprawiło, że WEP był znacznie mniej bezpieczny .