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