Mer*_*aya 66 c# hash byte sha1 hashcode
我希望byte[]使用使用SHA1Algorithm的哈希给定数组SHA1Managed.
该byte[]散列将来自单元测试.
预期的散列是0d71ee4472658cd5874c5578410a9d8611fc9aef(区分大小写).
我怎样才能做到这一点?
public string Hash(byte [] temp)
{
using (SHA1Managed sha1 = new SHA1Managed())
{
}
}
Run Code Online (Sandbox Code Playgroud)
Mit*_*tch 139
对于那些想要散列的"标准"文本格式的人,可以使用以下内容:
static string Hash(string input)
{
using (SHA1Managed sha1 = new SHA1Managed())
{
var hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(input));
var sb = new StringBuilder(hash.Length * 2);
foreach (byte b in hash)
{
// can be "x2" if you want lowercase
sb.Append(b.ToString("X2"));
}
return sb.ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
这会产生类似哈希的0C2E99D0949684278C30B9369B82638E1CEAD415.
或者代码高尔夫版本:
static string Hash(string input)
{
var hash = new SHA1Managed().ComputeHash(Encoding.UTF8.GetBytes(input));
return string.Concat(hash.Select(b => b.ToString("x2")));
}
Run Code Online (Sandbox Code Playgroud)
Joh*_*ogo 35
public string Hash(byte [] temp)
{
using (SHA1Managed sha1 = new SHA1Managed())
{
var hash = sha1.ComputeHash(temp);
return Convert.ToBase64String(hash);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
您还可以在将字节数组转换为字符串时指定编码,如下所示:
return System.Text.Encoding.UTF8.GetString(hash);
Run Code Online (Sandbox Code Playgroud)
要么
return System.Text.Encoding.Unicode.GetString(hash);
Run Code Online (Sandbox Code Playgroud)
sky*_*dev 13
这就是我的用途.对于那些想要优化的人,请查看/sf/answers/43706561/.
public static string Hash(string stringToHash)
{
using (var sha1 = new SHA1Managed())
{
return BitConverter.ToString(sha1.ComputeHash(Encoding.UTF8.GetBytes(stringToHash)));
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用以下方法"计算指定字节数组的值" ComputeHash:
var hash = sha1.ComputeHash(temp);
Run Code Online (Sandbox Code Playgroud)
如果要分析字符串表示形式的结果,则需要使用{0:X2}格式说明符格式化字节.
最快的方法是这样的:
public static string GetHash(string input)
{
return string.Join("", (new SHA1Managed().ComputeHash(Encoding.UTF8.GetBytes(input))).Select(x => x.ToString("X2")).ToArray());
}
Run Code Online (Sandbox Code Playgroud)
对于小字符输出,用于x2替换X2