我在保存、获取和比较 mysql DB 的加密哈希时遇到了麻烦。
如前所述,我正在使用"加密"模块来生成哈希(该哈希包含特殊字符)。
我的表使用"utf8_unicode_ci"排序规则。由于这些特殊的字符,我在将哈希保存到数据库时遇到了麻烦。所以,我尝试使用这种方法:
exports.real_escape_string = function real_escape_string(str) {
return str.replace(/[ x08x09x1anr"'\%]/g, function (char) {
switch (char) {
case " ":
return "\0";
case "x08":
return "\b";
case "x09":
return "\t";
case "x1a":
return "\z";
case "n":
return "\n";
case "r":
return "\r";
case """:
case "'":
case "\":
case "%":
return "\" + char; // prepends a backslash to backslash, percent,
// and double/single quotes
}
});
};
这有效,它确实设法将哈希保存到数据库,但由于某种原因,当将其保存到数据库时,它会更改哈希本身。我正在使用著名的 mysql 模块来访问 mysql 数据库并对其执行操作:
var mysql = require('mysql');
我还能尝试什么?
保存到数据库时使用base64,读取时再解码。