# #node.js #encryption #hash #dialogflow-es #sha
Вопрос:
Я пытаюсь зашифровать ввод пользователя и сравнить его с зашифрованной строкой в базе данных в dialogflow.
Как я могу добавить пакет crypto в package.json и заставить SHA-224 работать в index.js? Я попробовал свой код, но ничего не произошло.
Код Python для шифрования данных для последующего сравнения:
import hashlib
import pandas as pd
strings = []
data = pd.read_csv("DBDATA.csv")
df = data[['ID']]
for index, row in df.iterrows():
b = row["ID"].encode('utf-8')
print(b)
hashed = hashlib.sha224(b).hexdigest()
strings.append(hashed)
data["NUMBER"] = strings
Код Javascript для шифрования пользовательского ввода:
const crypto = require('crypto');
var hash = crypto.createHash('sha224');
var string = agent.parameters.adminnumber;
var hashedString = hash.update(string, 'utf-8');
var gen_hash= hashedString.digest('hex');
Пакет.json
"dependencies": {
"crypto": "4.0.0"
}
Ответ №1:
Код хорошо работает для меня (используя жестко закодированную «строку» var). Может быть, вы ничего не видите, потому что не регистрируете результат.
Не забудьте установить crypto
пакет с помощью npm install crypto --save
команды или просто npm install
, если зависимость уже существует в package.json
файле.
const crypto = require('crypto');
const hash = crypto.createHash('sha224');
const string = "Test SHA-224 crypto.";
const hashedString = hash.update(string, 'utf-8');
const gen_hash= hashedString.digest('hex');
console.log(gen_hash); // Trace the result
Примечание: var
ключевое слово заставляет плакать младенца Иисуса христа
Комментарии:
1. О, мое спасибо за это! В любом случае, верны ли мои зависимости для криптографии? хе-хе, кроме того, после получения gen_hash я фактически сравниваю его с данными базы данных, чтобы сделать снимок ключа.
var ref = admin.database().ref("NUMBER"); ref.orderByValue().equalTo(gen_hash). on("child_added", function(snapshot) { id = snapshot.key; });
В моей базе данных хранится хэшированная строка, которая должна совпадать с той, что в node.js верно? Так как это оба sha224?2. @user16381662 Да, если оба значения в sha224 должны быть равны. Моя крипто-версия «1.0.1», когда я устанавливаю ее для вашего примера, но этот пакет больше не поддерживается. Теперь это встроенный модуль узла (в зависимости от вашей версии nodejs). Я рекомендую вам удалить зависимость из package.json и переустановить ее с помощью команды
npm install crypto --save
.