可逆(元に戻せる)と不可逆(元に戻せない)がある。パスワードの検証などは戻す必要がないので不可逆でもいい。
SHA1,MD5など。MD5は衝突(入力値が違うのに暗号化後は同じになる)の可能性が高いので避けたい。
不可逆であればかならず上記MD5等が引っかかるのにこっちは情報が少ない。困ったもんだ。
参考サイト
http://d.hatena.ne.jp/yamaback/20110819/1313735667
一番安全と思われる方法。バイナリーが帰って来るのでBLOBかVARBINARYの列に入れること。だが、意図せぬx20によるトリムが怖いのでBLOB推奨とのこと
mysql> SELECT AES_ENCRYPT('test','KEY');
+---------------------------+
| AES_ENCRYPT('test','KEY') |
+---------------------------+
ィy鏡稽ハカ? |
+---------------------------+
1 row in set (0.00 sec)
mysql> SELECT HEX(AES_ENCRYPT('test','KEY'));
+----------------------------------+
| HEX(AES_ENCRYPT('test','KEY')) |
+----------------------------------+
| 24400DA879F9E28BBE8C6DCA0CB6103F |
+----------------------------------+
1 row in set (0.01 sec)