1

crypto モジュールを使用して、データベースに保存するためのソルトとハッシュを作成しています。関連する場合は、SHA-512 を使用しています。

私が持っているのは、.によって作成された、現在「SlowBuffer」の形式の 64 バイトのソルトcrypto.randomBytes(64, . . .)です。例:

<SlowBuffer 91 0d e9 23 c0 8e 8c 32 5c d6 0b 1e 2c f0 30 0c 17 95 5c c3 95 41 fd 1e e7 6f 6e f0 19 b6 34 1a d0 51 d3 b2 8d 32 2d b8 cd be c8 92 e3 e5 48 93 f6 a7 81 ...>

また、現在文字列である 64 バイトのハッシュもあります。例:

'de4c2ff99fb34242646a324885db79ca9ef82a5f4b36c657b83ecf6931c008de87b6daf99a1c46336f36687d0ab1fc9b91f5bc07e7c3913bec3844993fd2fbad'

私のデータベースには、passhash と passsalt という 2 つのフィールドがありますbinary(64)

mysqlモジュール ( ) を使用しrequire('mysql')て行を追加しています。挿入するバイナリを含めるにはどうすればよいですか?

4

1 に答える 1

4

まず第一に、私はもはや mysql モジュールを使用していませんが、mysql2 モジュールを使用しています (準備済みステートメントをサポートしているため)。これは質問に関してほとんど何も変わりませんが、これを読んで「mysql」を使用している人はおそらく「mysql2」を使用する必要があることに言及したいと思います。

次に、これらのモジュールは両方とも、これらのフィールドのパラメーターとしてバッファーを受け取ることができます。これは完全に機能します。私が最初にやろうとしていたことをするために、私は次のようにしています:

var hash; //Pretend initialized as a 64-bit buffer
var salt; //" "

connection.query('insert into users set?', {..., passhash: hash, passsalt: salt,..., callback});

さらに、暗号の「ダイジェスト」関数には、パラメーターなしのデフォルトの動作があり、バッファーとして返されることに気付きませんでした。

これは最良の答えではありませんが、それは誰もこの質問にあまり注意を払っていないように見えるためであり、それは私の質問でした. :) さらに明確にしたい場合は、お気軽にコメントしてください。

于 2013-07-23T06:53:12.410 に答える