0

我在保存、获取和比较来自 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');

我还能尝试什么?

4

1 回答 1

1

保存到数据库时使用base64,然后在读取时解码。

于 2013-09-23T15:53:29.430 回答