我在保存、获取和比较来自 mysql DB 的加密哈希时遇到了麻烦。
如前所述,我正在使用“加密”模块来生成哈希(该哈希包括特殊字符)。
我的表使用“utf8_unicode_ci”排序规则。由于这些特殊字符,我在将哈希保存到数据库时遇到了麻烦。所以,我尝试使用这种方法:
exports.real_escape_string = function real_escape_string(str) {
return str.replace(/[\0\x08\x09\x1a\n\r"'\\\%]/g, function (char) {
switch (char) {
case "\0":
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');
我还能尝试什么?