我遇到麻烦,需要保存,获取并比较来自mysql DB的加密哈希值。
如上所述,我正在使用'crypto'模块来生成哈希(哈希包含特殊字符)。
我的表使用“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');
我还能尝试什么?
答案 0 :(得分:1)
保存到数据库时使用base64,然后在读取时解码。