ENCRYPT( 暗号化する文字列 ) ENCRYPT( 暗号化する文字列, SALT値 )
ENCRYPT関数を使用することで、crypt()を使用して暗号化することができます。
SALT値はMySQL3.22.16以降は2文字以上で指定できます。(それより前のバージョンは2文字固定)
SALT値を変更することで、同じ文字列の暗号化でも異なる暗号化文字列を生成することができます。
この暗号化方式は一方向の暗号化であり、復号して元の文字列に戻すことはできません。
また、Windowsなどcrypt()をサポートしないOSで使用した場合はNULLを返します。
mysql> SELECT ENCRYPT( 'angoukasurumojiretsu' ); +-----------------------------------+ | ENCRYPT( 'angoukasurumojiretsu' ) | +-----------------------------------+ | 1U7Q1a19uka0o | +-----------------------------------+ 1 row in set (0.00 sec) mysql> SELECT ENCRYPT( 'angoukasurumojiretsu', 'sa' ); +-----------------------------------------+ | ENCRYPT( 'angoukasurumojiretsu', 'sa' ) | +-----------------------------------------+ | sa4R6flZURPos | +-----------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT ENCRYPT( 'angoukasurumojiretsu', 'sb' ); +-----------------------------------------+ | ENCRYPT( 'angoukasurumojiretsu', 'sb' ) | +-----------------------------------------+ | sbZB6CKDvCw2M | +-----------------------------------------+ 1 row in set (0.00 sec) mysql> -- SALTは1文字だとエラー mysql> SELECT ENCRYPT( 'angoukasurumojiretsu', 's' ); +----------------------------------------+ | ENCRYPT( 'angoukasurumojiretsu', 's' ) | +----------------------------------------+ | NULL | +----------------------------------------+ 1 row in set (0.00 sec)
mysql> SELECT ENCRYPT( 'angoukasurumojiretsu', 'sa' ); +-----------------------------------------+ | ENCRYPT( 'angoukasurumojiretsu', 'sa' ) | +-----------------------------------------+ | NULL | +-----------------------------------------+ 1 row in set (0.00 sec)
OSに依存しない一方向の暗号化としてはMD5関数やSHA1関数があり、これらの関数の利用が推奨されています。