MySQLのテーブル内に格納された、暗号化されたレコードを復号化してVB6のテキストボックスに表示したいのですが、うまくできません。
暗号化・複合化ともにVB6の方で行っています。
以下が暗号化に使用したプログラムを抜粋したものです。
cn.Execute "insert into touroku2(no,Name,pass,nicname,flag) values ('5','" & name & "',HEX(AES_ENCRYPT('" & pass2 & "','key')),'" & nicname & "','0')"
MySQL内のテーブルの項目「no」、「Name」、「pass」、「nicname」、「flag」にそれぞれ「5」、変数「name」の内容、暗号化した「pass2」の内容、変数「nicname」の内容、「0」を挿入しています。テーブルの項目「pass」はVARCHAR型となっております。
そして以下のプログラムが復号して変数に代入するプログラムなのですが、上手くできません。
Set rs = cn.Execute("SELECT pass as no1 FROM touroku2 WHERE AES_DECRYPT(UNHEX(pass),'key') = text1")
text2.text= rs.Fields("no1").Value
テーブルの項目「pass」を複合化し、その内容とVB6内のテキストボックス「text1」に入力された内容が同じものを変数「no1」に代入し、その内容をテキストボックス「text2」に表示させたいです。
no1をByte型にしたら0が表示されました。
説明がわかりにくいですけど、ご教授お願いします。
少し確認です。
以下MySQL使ったことないので想像です。
大前提なのですけど、「SELECT pass as no1 FROM touroku2」だけのときは
暗号化されて何だか分からないHEX文字列で期待(取得)した表示はできますか?
byte型ではなくてbyte配列とか文字列で受け取るのが正しいのでは?
>「WHERE AES_DECRYPT(UNHEX(pass),'key') = text1")」
これは記載ミスですよね?
「SELECT pass as no1 FROM touroku2」だけのときは
暗号化されて何だか分からないHEX文字列で期待(取得)した表示はできますか?>
このSELECT文で実行した場合、HEX文字列に暗号化されたpassの内容が表示されます
また、no1をByte型からByte配列や文字列に変更しても結果は変わりませんでした
>「WHERE AES_DECRYPT(UNHEX(pass),'key') = text1")」
これは記載ミスですよね?>
恥ずかしながら記載ミスではありません
VB初心者でして、まだ使い方がよくわかりません
>WHERE AES_DECRYPT(UNHEX(pass),'key') = text1
WHERE AES_DECRYPT(UNHEX(pass),'key') = '" & text1 & "'"
ではないでしょうか?
すみません、プログラムいじっていたら複合化できました
ご教授ありがとうございました