【发布时间】:2020-10-18 17:58:24
【问题描述】:
我在数据库中有哈希值。这是在 Asp Web Form(可能是 .Net 3)中创建的。这是旧代码:
string hash = SHA1(SHA1(pass.Trim() + number.Trim()));
这些是数据示例:
pass = AGent24022
number = 24022
hash = 2cdfaec91e938eaa7f432fd606745c23399cc3b8
我需要在 Asp Net Core 中根据这些数据生成这个哈希值。但我无法得到这个值。这些是我的一些实现的示例。
//1
static string Hash2(string input)
{
return string.Join("",SHA1CryptoServiceProvider.Create().ComputeHash(Encoding.UTF8.GetBytes(input)).Select(x =>
x.ToString("x2")));
}
//2
static string Hash1(string input){
using (var sha1 = new SHA1Managed())
{
return BitConverter.ToString(sha1.ComputeHash(Encoding.UTF8.GetBytes(input)));
}
}
//3
static string Hash0(string input)
{
var hash = new SHA1Managed().ComputeHash(Encoding.UTF8.GetBytes(input));
return string.Concat(hash.Select(b => b.ToString("x2")));
}
这是我的用途:
string input = pass.Trim() + number.Trim();
var res = Hash0(Hash0(input);
//var res = Hash1(Hash1(input);
//var res = Hash2(Hash2(input);
也许原因是实现方式发生了变化。任何建议,我将不胜感激。
【问题讨论】:
-
您的原件有一个额外的“数字”,我在您的新代码中没有看到。而且您的原始代码似乎两次应用了 SHA1,或者?
-
谢谢,我修复了我的源代码示例
-
我看到你在第一次通话时打了两次
SHA1SHA1(SHA1("yourString"))。 -
是的,这个逻辑用在旧代码中
标签: c# asp.net .net-core cryptography sha