mysql - 从 node.js 将二进制文件插入 MySQL

标签 mysql node.js cryptography

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

我有一个 64 字节的盐,目前以“SlowBuffer”的形式存在,由 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,它们是 binary(64)

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

最佳答案

首先,我不再使用mysql模块,而是mysql2模块(因为它支持prepared statements)。这对问题几乎没有任何改变,但我想提一下,那些正在使用“mysql”阅读本文的人可能应该使用“mysql2”。

其次,这两个模块都可以将缓冲区作为这些字段的参数。这非常有效。要做我最初尝试做的事情,我是这样的:

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/

相关文章:

c# - 使用C#+MySql数据库使用Web Service的困惑

MySQL创建触发器关键字

c# - RSA:如何在 java 中生成私钥并在 C# 中使用它?

rust - 如何从作为十六进制编码字符串给出的模数和指数构造公钥?

php - 通过 PHP 在 MySQL 数据库中回显用户

php - 交易优先?

javascript - Postgres - 使用什么列类型来存储嵌套数组

node.js - Mongoose 模式更新 GeoJSON

node.js - Mongoose - ObjectID 作为键?

java - scala 中的 OAuth Consumer Secret Consumer Key 生成