我正在使用加密模块创建盐和哈希值,以存储在数据库中。如果相关,我正在使用SHA-512。

我所拥有的是一个64字节的盐,目前由crypto.randomBytes(64, . . .)创建,形式为“ SlowBuffer”。例:

<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,它们是binary(64)

我正在使用mysql模块(require('mysql'))添加行。如何包含要插入的二进制文件?

最佳答案

首先,我不再使用mysql模块,而是使用mysql2模块(因为它支持预处理语句)。这几乎没有改变任何问题,但是我想提一下,那些正在阅读“ MySQL”的人应该使用“ mysql2”。

其次,这两个模块都可以将Buffers作为这些字段的参数。这很完美。要执行我最初尝试做的事情,我会像这样:

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

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


另外,我没有意识到加密的“摘要”功能具有默认行为,该行为没有参数,即作为缓冲区返回。

这不是措辞最好的答案,但这是因为似乎没人在乎这个问题,这是我的问题。 :)如果您想进一步澄清,请随时发表评论。

关于mysql - 从node.js将二进制文件插入MySQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17737874/

10-14 14:02
查看更多