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