Vážně, NEPOUŽÍVEJTE aes_encrypt() MySQL Je to nejnebezpečnější metoda použití blokové šifry. Používá režim ECB a mohu uvést jednoduchý příklad, proč je to vážná chyba.
Prostý textová zpráva:
Stejná zpráva zašifrovaná v režimu ECB (nezáleží na tom, jakou šifru používáte):
PŘESNĚ stejná zpráva v režimu CBC (opět nezáleží na tom, jakou šifru používáte):
Důvodů je ještě více abyste nepoužívali aes_encrypt mysql, zejména každý jednotlivý dotaz, který odešlete, bude mít také klíč aes, který používáte. Pokud je databáze kompromitována, útočník povolí protokolování a získá váš klíč aes a dešifruje celou databázi .
Co tedy mělo by používáš? Líbí se mi tato třída prozatím. Používá režim CBC s funkcí String2Key a IV. Primární klíč můžete použít jako svůj IV, každá zpráva musí mít jedinečný IV. Je v pořádku, pokud útočník zná IV a pokud jsou sekvenční, pokud je implementace blokové šifry bezpečná. Opětovné použití IV učinilo WEP mnohem méně bezpečným .