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

时间:2013-09-23 12:41:51

标签: mysql node.js hash

我遇到麻烦,需要保存,获取并比较来自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');

我还能尝试什么?

1 个答案:

答案 0 :(得分:1)

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