• 締切済み

AES_ENCRYPTとAES_DECRYPTについて

大変困っています。テーブルに暗号化して書き込むことはできました。ですがテーブルから引っ張ってこようとしたとき問題が起きました。 select * from tableとやると暗号化されたまま出てきました。問題ありません。 次に select * from table where aa = 'bb' としたときに事件が起きました。一致するレコードがありません。どうして? あ、そうか! select aes_decrypt(aa,'111') from table where aa = 'bb'一致するレコードがありません。 な、なぜだ?さっぱりわかりません。 暗号化してしまったレコードはwhere条件を指定できないのでしょうか? もし、知っていらっしゃる方がいましたらどうか教えてください。 是非是非よろしくお願いします。

みんなの回答

回答No.1

mysqlによる暗号化は使った事が無いのですが、暗号化された状態でデータが格納されている訳ですから、whereでの条件も暗号化して検索してあげないといけないのでは?

biltukisan
質問者

補足

ありがとうございます。おかげで一致するレコードを発見することができました。 ですが新たな問題が・・・・・ 一致するレコードは見つかったのですが 暗号化してあるところが空白で出てきてしまいます。 パスワードが間違えたかな?いや、間違いない。 decrypt()の構文はあっているかな?あっていた。 selectでdecryptを発行するときはどうやって発行すればいいか知っている方、よろしくお願いします。