2

次のコードを使用して文字列を暗号化しています。

$value = 'somevalue';
$key = Configure::read('Security.salt');

$encrypted = Security::cipher($value,$key);
$decrypted = Security::cipher($encrypted,$key);

正常に動作し、正しく暗号化/復号化します。しかし、暗号化された値をデータベースに保存できません。フィールド encrypted_data の値を、データベースのこのフィールドに何もない$encrypted後に設定します。save()$encrypted をたとえば「string」に変更すると、「string」が正しく保存され'encrypted_data'ます。

問題は、暗号化された文字列に、データベースが受け入れない奇妙な文字が含まれている可能性があります-どうすれば修正できますか? (utf-8 で mysql データベースを使用)

4

2 に答える 2

1

問題は、VARCHARこれらの文字がサポートされていないことです。代わりにVARBINARY、UTF 文字セット以外の文字をサポートするように列を変更する必要があります。

于 2013-03-16T17:28:54.967 に答える