2013-07-19 2 views
1

Я использую крипто-модуль для создания солей и хэшей для хранения в моей базе данных. Я использую SHA-512, если это актуально.Вставка двоичного кода в MySQL из node.js

У меня есть 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) s.

Я использую модуль mysql (require('mysql')), чтобы добавить строку. Как включить двоичные файлы для вставки?

+0

Почему бы не сохранить двоичные данные в виде строки в шестнадцатеричном или Base64? – rossum

+0

Эффективность данных. Не то, чтобы это имело значение или что-то еще, но мне кажется, что лучше избегать использования менее эффективных структур данных, чем это необходимо. –

ответ

3

Прежде всего, я больше не использую модуль 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}); 

Кроме того, я не понимаю, что крипто «переваривать» функция имела поведение по умолчанию без параметров, который должен вернуться в Буфер.

Это не лучший ответ, но это потому, что никто, кажется, не уделяет много внимания этому вопросу, и это был мой вопрос. :) Если вы хотите получить больше разъяснений, не стесняйтесь комментировать.

Смежные вопросы