Wygląda na to, że rozumiesz to, ale należy podkreślić, że algorytm szyfrowania, który zawsze wytwarza ten sam tekst szyfrowania dla danego zwykłego tekstu, jest uszkodzony. Prowadzi do wszelkiego rodzaju ataków.
Na przykład osoba atakująca mająca dostęp do bazy danych i aplikacja może wybrać wartość "Jan" dla pola i spowodować, że aplikacja zapisze dane w bazie danych. Następnie może przyjrzeć się tekstowi szyfrowania dla swojego rekordu i zidentyfikować wszystkie inne rekordy zawierające ten tekst szyfrowania. Nie musi uzyskać klucza do tego.
Wyjątek stanowi szyfrowanie dużych, "nieprzewidywalnych" unikatowych numerów, na przykład identyfikatorów sesji lub identyfikatorów UUID. W takim przypadku, ponieważ zwykłe teksty nie powtarzają się, a prawidłowy tekst jawny nie może być przewidziany przez atakującego, nierozróżnialność szyfrogramów nie jest wymagana.
Dowolny symetryczny szyfr używany w trybie ECB będzie generował spójny tekst zaszyfrowany z czystego tekstu, podobnie jak przy użyciu trybów, które pobierają wektor inicjujący, jeśli zawsze używasz tego samego IV. Po prostu nie jest to dobry pomysł.
Aby przechowywać zaszyfrowane dane w mysql, trzeba by je odszyfrować (zakładając, że zrobiono to przy użyciu mysql, a nie php), aby przeprowadzić wyszukiwanie słów kluczowych. Byłoby to szalenie powolne, ponieważ nawet indeksy nie byłyby w stanie ci pomóc. –
Mam pomysł na pytanie, dlaczego chcesz przechowywać zaszyfrowane dane? –
Ponieważ jest to dane, które powinny być czytelne tylko dla osób, które zostały autoryzowane w aplikacji internetowej (nie w DB). Wiele osób pracuje z tym DB i ma dostęp do odczytu. – HappyDeveloper