【问题标题】:how to store CryptoJS encrypted password in database如何将 CryptoJS 加密密码存储在数据库中
【发布时间】:2016-12-25 08:10:44
【问题描述】:

我对 CRYPTO JS 加密的东西很陌生,我正在尝试将加密哈希存储在数据库中(我正在尝试存储在 firebase 数据库中)。

    var hash = CryptoJS.AES.encrypt('my message', 'secret key 123');

我正在尝试将哈希变量存储在数据库中。 但是当我尝试存储时,它向我显示错误,它是功能,无法存储。

PS-我正在尝试将加密哈希存储在数据库中,并希望从数据库调用我应用程序的另一页上的加密哈希并在那里解密。

这可能吗?如果是,那么请告诉我如何。 谢谢

【问题讨论】:

  • 嗨 m03a3a17,欢迎来到 Stack Overflow。如果您在运行代码时遇到错误,那么您需要在问题中显示该错误;否则任何人都很难确切知道出了什么问题。
  • 好的,伙计...谢谢..我下次试试....顺便说一句,你认为我问的问题很好
  • AES 是一种加密算法(可逆)而不是散列函数(不可逆)。请不要混淆他们。密码必须经过哈希处理,但单个哈希是不够的,因为攻击者拥有快速的密码哈希机器。您需要反复对其进行哈希处理。用于此的函数类似于 CryptoJS 支持的 PBKDF2。由于散列函数是单向函数,因此您将无法“解密”散列。为了验证您的用户,您可以再次通过哈希函数运行密码,以便与存储在数据库中的哈希值进行比较。
  • 非常感谢..你几乎让我明白了这个概念

标签: javascript encryption hash firebase cryptojs


【解决方案1】:

您的hash 是一个对象,您需要调用hash.toString() 将其转换为字符串。

来自 CryptoJS github 页面:

var hash = CryptoJS.SHA3("Message");

//The hash you get back isn't a string yet. It's a WordArray object.
//When you use a WordArray object in a string context,
//it's automatically converted to a hex string. 
alert(hash.toString()); //Same as hash.toString(CryptoJS.enc.Hex);
// Import and use instance for TypeScript.
import * as crypto from "crypto-js";
console.log(crypto.SHA256("password").toString());

【讨论】:

  • 谢谢..这个答案对我有帮助,你能告诉我如何解密这个吗?
  • var decrypted = CryptoJS.AES.decrypt(hash, 'secret key 123'); 其他示例:davidebarranca.com/2012/10/… - 请在 StackOverflow 上将后续问题作为新问题发布,不要在 cmets 中添加新问题;)如果它回答了您最初的问题。
猜你喜欢
  • 2011-07-15
  • 2011-04-26
  • 2020-03-20
  • 2012-04-07
  • 2011-02-27
  • 1970-01-01
  • 1970-01-01
  • 2012-03-16
  • 2011-04-28
相关资源
最近更新 更多