忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


2024/04/20 10:16 |
MySQLで暗号化
MySQLでパスワードを保存したかったので色々調べました。

どうもAES_ENCRYPT関数とAES_DECRYPT関数というのが安全性が高くていいらしい。
MySQL4.0.2以降で利用可能で、AES(Advanced Encryption Standard)アルゴリズムでデータの暗号化/解読を行うそうです。
以下にサンプルを記します。


[SQL]

INSERT INTO table VALUES (AES_ENCRYPT('text', 'key_string'))



textという文字列をkey_stringを使って暗号化してます。
複合化するときは以下のような感じ。



[SQL]

SELECT AES_DECRYPT(column_name, 'key_string') FROM table


column_nameに暗号化された情報が入っているとして、それをkey_stringで複合化してます。
暗号化と複合化に使うkey_stringは同じものを使うように。



それと自分がハマったんですが、暗号化された情報を入れるカラムの型はblob型です。
varchar型に入れようとすると、長さが短くなったよくわからない文字列が入り、複合化するとNULLが返ってきます。


ちなみにblob型の長さは、パスワードの文字数に1を足して16の倍数で切り上げた分だけ必要です。
例をあげると、12文字までのパスワードを受け付ける場合は16、24文字まで受け付ける場合は32にする必要があります。


バイナリで保存したくない場合は、
HEX関数でHEXダンプするとvarchar型でも保存できるそうですが、まぁそういうこともできるんだよー、という紹介までに留めておきます。


PR

2008/05/02 02:32 | Comments(0) | TrackBack() | MySQL

トラックバック

トラックバックURL:

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<GoogleMapの利用、IEでエラー | HOME | 画像の表示をタグでやるかCSSでやるか>>
忍者ブログ[PR]