可逆(元に戻せる)と不可逆(元に戻せない)がある。パスワードの検証などは戻す必要がないので不可逆でもいい。
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)