2013-12-24 6 views
1

Я использую Blowfish encryted функцию:Blowfish хранилища данных в базе данных MySQL

class Blowfish { 

private $key; 
private $iv; 

public function __construct($key, $iv) { 
    $this->key = $key; 
    $this->iv = $iv; 
} 

public function encrypt($data) { 
    return mcrypt_encrypt(MCRYPT_BLOWFISH, $this->key, $data, MCRYPT_MODE_CBC, $this->iv); 
} 

public function decrypt($data) { 
    return mcrypt_decrypt(MCRYPT_BLOWFISH, $this->key, $data, MCRYPT_MODE_CBC, $this->iv); 
}} 

Теперь, когда я что-то шифруется с помощью этой функции, как:

$blowfish = new blowfish('DfRgBWE4Y4T7UgTWEdFP1Y', '85440934'); 
echo $pass = $blowfish -> encrypt('12345'); 

, который должен появится -> 'Ii «

`Password` varchar(255) CHARACTER SET utf32 NOT NULL 

Но каждый раз, когда я пытаюсь вставить его, вставка, как «? Я ?? YR?» что теперь делать?

ответ

0

Я предлагаю не хранить (потенциально) двоичные, то есть данные, отличные от AlphaNumeric, в базе данных SQL, особенно не в varchar (..), которые будут испорчены, когда вы попытаетесь просмотреть данные.

Вместо либо Base64 или HEX закодировать его, HEX, вероятно, лучший вариантом, для HEX очень легко и родные для MySQL:

INSERT INTO table SET Password = HEX(?) 

? является заполнитель для Blowfish результата

Чтобы получить двоичные данные из базы данных, выполните следующие действия:

INSERT UNHEX(Password) FROM table 
Смежные вопросы