2

パスワード フィールドを暗号化し、MySQL テーブルに挿入しました。その後、その列を復号化しました

select fld_user,fld_pwd,AES_DECRYPT(fld_encryptedpwd,'key')
  from users 
 where fld_id='1903';

しかし、結果は「BLOB」を示しています。暗号化された列のデータ型として Varbinary() を使用しました。どうすればいいですか?

4

1 に答える 1

5

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;

これにより、返されるデータ型が表示されます。

(繰り返しますが、暗号化されたパスワードの保存: あまり良くありません。)

于 2012-06-27T10:59:13.950 に答える