从node.js插入二进制到MySQL

我正在使用encryption模块来创buildsalt和哈希以存储在我的数据库中。 我正在使用SHA-512,如果这是相关的。

我所知道的是一个64字节的盐,目前是由crypto.randomBytes(64, . . .)创build的“SlowBuffer”的forms。 例:

<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字节的散列,目前是一个string。 例:

'de4c2ff99fb34242646a324885db79ca9ef82a5f4b36c657b83ecf6931c008de87b6daf99a1c46336f36687d0ab1fc9b91f5bc07e7c3913bec3844993fd2fbad'

在我的数据库中,我有两个名为passhash和passsalt的字段,它们是binary(64)

我正在使用mysql模块( require('mysql') )来添加行。 我怎样才能包含二进制文件插入?

       

网上收集的解决方案 "从node.js插入二进制到MySQL"

首先,我不再使用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}); 

另外,我还没有意识到crypto“digest”函数有一个没有参数的默认行为,就是以Buffer的forms返回。

这不是最好的答案,但那是因为似乎没有人关注这个问题,这是我的问题。 :)如果你想要更多的澄清,随时发表评论。