【问题标题】:Can I use the SHA-224 encryption in Dialogflow Node.js?我可以在 Dialogflow Node.js 中使用 SHA-224 加密吗?
【发布时间】:2021-09-16 00:32:42
【问题描述】:

我正在尝试加密用户输入并在对话流中与数据库中的加密字符串进行比较。

如何将加密包添加到 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"
  }

Dialogflow Nodejs

【问题讨论】:

    标签: node.js encryption hash dialogflow-es sha


    【解决方案1】:

    代码对我来说很好用(使用硬编码的“字符串”变量)。也许你没有看到任何结果,因为你没有记录结果。

    请记住使用npm install crypto --save 命令安装crypto 包,如果package.json 文件中已经存在依赖关系,则只需使用npm install

    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 关键字会让婴儿 jesuschrist 哭泣

    【讨论】:

    • 哦,谢谢!无论如何,我对加密的依赖是否正确? hehe 另外,在得到 gen_hash 后,我实际上是在将其与数据库数据进行比较以对密钥进行快照。 var ref = admin.database().ref("NUMBER"); ref.orderByValue().equalTo(gen_hash). on("child_added", function(snapshot) { id = snapshot.key; }); 我的数据库存储的哈希字符串应该能够与 node.js 中的匹配,对吧?既然都是sha224?
    • @user16381662 是的,如果两个值都在 sha224 中,则必须相等。为您的示例安装它时,我的加密版本是“1.0.1”,但不再支持此包。它现在是一个内置的 Node 模块(取决于你的 nodejs 版本)。我建议您从 package.json 中删除依赖项并使用命令 npm install crypto --save 重新安装它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    • 2018-12-03
    • 2015-10-08
    • 1970-01-01
    • 2016-01-21
    • 2020-03-21
    相关资源
    最近更新 更多