パスワード フィールドを暗号化し、MySQL テーブルに挿入しました。その後、その列を復号化しました
select fld_user,fld_pwd,AES_DECRYPT(fld_encryptedpwd,'key')
from users
where fld_id='1903';
しかし、結果は「BLOB」を示しています。暗号化された列のデータ型として Varbinary() を使用しました。どうすればいいですか?
パスワード フィールドを暗号化し、MySQL テーブルに挿入しました。その後、その列を復号化しました
select fld_user,fld_pwd,AES_DECRYPT(fld_encryptedpwd,'key')
from users
where fld_id='1903';
しかし、結果は「BLOB」を示しています。暗号化された列のデータ型として Varbinary() を使用しました。どうすればいいですか?
MySQL Workbench での解決策は、SQL エディタの次のオプションを切り替えることです: 「BINARY/VARBINARY を非バイナリ文字列として扱う」。少なくとも MacOS X では、オプションを有効にするために Workbench を再起動する必要があります。(値を右クリックして、[ビューアで値を開く] を実行することもできます)。
Workbench のオプションを変更したくない場合は、CAST()関数を使用してAES_DECRYPT()の結果を文字列として返すことができます。
SELECT fld_user, fld_pwd, CAST(AES_DECRYPT(fld_encryptedpwd, 'key') AS CHAR)
FROM users WHERE fld_id='1903';
関数が返すデータ型をチェック/確認する秘訣は、MySQL CLI を使用して次のことを行うことです。
mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
FROM users WHERE fld_id='1903';
mysql> DESC tmp1;
これにより、返されるデータ型が表示されます。
(繰り返しますが、暗号化されたパスワードの保存: あまり良くありません。)