1

暗号化された文字列(約1〜2語)を保存するにはどうすればよいですか?

この文字列を暗号化したとしましょう。

$key='fappings'; // Encryption Key
$str='Mama Luigi'; // String that I Encrypted
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $str, MCRYPT_MODE_CBC, md5(md5($key)));

ここで、そのデータにインデックスを付けたり、データを検索したりしたくないと仮定して、2つの質問をしたいと思います。

  1. どのデータ型を使用したほうがよいですか?varbinaryだと思いますが、よくわかりません...

  2. クエリをどのように処理しますか?単純なmysql_query()関数を使用すると仮定します。

何人かの人々が実際にbase64エンコードを作成し、それを通常の文字列と同じように挿入するのを見ました。例:

mysql_query("insert into faps data='".base64_encode($encrypted)."'");

しかし、何かがそれを行う方法ではないことを教えてくれます。スペース的にも不十分です。

より良いアプローチは何でしょうか?

4

1 に答える 1

1

必要な長さに応じて、varbinary (お勧め) または blob を使用します。安全のため、紐の長さを 4 倍してください。

base64 でエンコードする必要はありません。これにより、さらに長さが追加されます。必要なのは、通常のエスケープ関数 (基本レベルの mysql_real_escape_string、または PDO を使用してバインドすることで安全になります) だけです。

別の方法として、MySql 独自の暗号化関数を使用することもできます。http://dev.mysql.com/doc//refman/5.5/en/encryption-functions.htmlこれにより、プログラミングの手間が省けるかもしれません。ストレスを PHP サーバーから MySQL サーバーに移動します。そのため、ストレスの少ないサーバーを検討し、圧縮されていない SQL 命令がオープン ネットワークを介して移動することが重要かどうかなどを検討します。

于 2012-07-29T14:15:16.120 に答える