将'crypto'模块生成的哈希保存到 mysql



我在保存、获取和比较 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,读取时再解码。

最新更新