0

mysql DB から暗号ハッシュを保存、取得、比較するのに問題があります。

前述のように、ハッシュを生成するために「crypto」モジュールを使用しています(そのハッシュには特殊文字が含まれています)。

私のテーブルは「utf8_unicode_ci」照合を使用しています。これらの特殊文字のため、ハッシュを DB に保存するのに苦労しました。だから、私はこの方法を使用しようとしました:

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
        }
    });
};

それは機能し、ハッシュをDBに保存することができましたが、何らかの理由でDBに保存するとハッシュ自体が変更されます。mysql データベースにアクセスしてアクションを実行するために、有名な mysql モジュールを使用しています。

var mysql = require('mysql');

他に何を試すことができますか?

4

1 に答える 1