mysql数据库中的河豚数据存储

mysql数据库中的河豚数据存储,mysql,encryption,store,password-protection,blowfish,Mysql,Encryption,Store,Password Protection,Blowfish,我使用的是河豚镶嵌功能: 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,

我使用的是河豚镶嵌功能:

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');
其中应显示-->“ìI”èYR” 但我无法将其保存在数据库表中。我的表格结构如下:

`Password` varchar(255) CHARACTER SET utf32 NOT NULL
但每次我试着插入它时,插入就像是“I??YR?” 现在该怎么办?

我建议不要将(可能的)二进制数据,即非字母数字数据存储在SQL数据库中,特别是不要存储在varchar(..)中,当您试图查看数据时,这会把事情搞得一团糟

相反,Base64或HEX对其进行编码,HEX可能是更好的选择,对于HEX,MySQL非常简单且原生:

INSERT INTO table SET Password = HEX(?)
是河豚结果的占位符

要从数据库中提取二进制数据,请执行以下操作:

INSERT UNHEX(Password) FROM table