javascript - 使用 SHA256 和 .NET/Node.js 对密码进行哈希处理

标签 javascript .net node.js hash sha2

我将用户密码的 SHA256 哈希值存储在由 .NET 生成的数据库中,我需要能够使用 Node.js 来检查它们。唯一的问题是 .NET 和 Node.js 为相同的密码创建不同的哈希值。

Password: ThisPassword  

.NET:

var ue = new UnicodeEncoding();  
var byteSourceText = ue.GetBytes("ThisPassword");  
var byteHash = new System.Security.Cryptography.SHA256Managed().ComputeHash(byteSourceText);  
return Convert.ToBase64String(byteHash);

//Tlwxyd7HIQhXkN6DrWJtmB9Ag2fz84P/QgMtbi9XS6Q=

Node.js(使用加密):

var crypto = require('crypto');
return crypto.createHash('sha256').update('ThisPassword').digest('base64')

//d7I986+YD1zS6Wz2XAcDv2K8yw3xIVUp7u/OZiDzhSY=

我找到了 this ,但无法弄清楚如何实现他的解决方案。

最佳答案

编辑:您在 C# 中使用 UTF-16,您必须在两种语言中使用相同的编码:

Node.js:

var crypto = require("crypto");
var sha256 = crypto.createHash("sha256");
sha256.update("ThisPassword", "utf8");//utf8 here
var result = sha256.digest("base64");
console.log(result); //d7I986+YD1zS6Wz2XAcDv2K8yw3xIVUp7u/OZiDzhSY=

C#:

SHA256 sha256 = SHA256Managed.Create(); //utf8 here as well
byte[] bytes = sha256.ComputeHash(Encoding.UTF8.GetBytes("ThisPassword"));
string result = Convert.ToBase64String(bytes);
Console.WriteLine(result); //d7I986+YD1zS6Wz2XAcDv2K8yw3xIVUp7u/OZiDzhSY=

关于javascript - 使用 SHA256 和 .NET/Node.js 对密码进行哈希处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13714103/

相关文章:

javascript - 多次执行命令而不循环javascript

javascript - 如何在 <div> 标签中左右浮动元素?

c# - Expression-Bodied Function 与 Auto Properties 结合会导致问题

node.js - RethinkDB:​​从游标中仅获取一条记录

javascript - react.js - 服务器端渲染和路由策略

javascript - jquery $(td) 排除 colspan?

javascript - 如何通过多次单击按钮来解决 React.js 状态?

.net - 为什么 IDictionary(非泛型)不继承自 IEnumerable<DictionaryEntry>?

c# - 将 Linq 表达式转换为 URI : The method 'Select' is not supported 时出错

node.js - 在 Sequelize 操作之后关闭我的连接是一个好习惯吗?