C#SHA-2(512)Base64编码哈希
正在寻找从字符串在C#中执行以下操作的方法 计算SHA-512摘要并将值作为十六进制字符串返回 参数: 数据-要摘要的数据 返回: SHA-512摘要作为十六进制字符串C#SHA-2(512)Base64编码哈希,c#,encryption,C#,Encryption,正在寻找从字符串在C#中执行以下操作的方法 计算SHA-512摘要并将值作为十六进制字符串返回 参数: 数据-要摘要的数据 返回: SHA-512摘要作为十六进制字符串 private static string GetSHA512(string text) { UnicodeEncoding UE = new UnicodeEncoding(); byte[] hashValue; byte[] message = UE.Get
private static string GetSHA512(string text)
{
UnicodeEncoding UE = new UnicodeEncoding();
byte[] hashValue;
byte[] message = UE.GetBytes(text);
SHA512Managed hashString = new SHA512Managed();
string encodedData = Convert.ToBase64String(message);
string hex = "";
hashValue = hashString.ComputeHash(UE.GetBytes(encodedData));
foreach (byte x in hashValue)
{
hex += String.Format("{0:x2}", x);
}
return hex;
}
你需要什么
var alg = SHA512.Create();
alg.ComputeHash(Encoding.UTF8.GetBytes("test"));
BitConverter.ToString(alg.Hash).Dump();
在生产中执行:
EE-26-B0-DD-4A-F7-E7-49-AA-1A-8E-E3-C1-0A-E9-92-3F-61-89-80-77-2E-47-3F-88-19-A5-D4-94-0E-0D-B2-7A-C1-85-F8-A0-E1-D5-F8-4F-88-BC-88-7F-D6-7B-14-32-C3-04-CC-5F-A9-AD-8E-6F-57-00-A8
要根据问题创建方法,请执行以下操作:
public static string sha512Hex(byte[] data)
{
using (var alg = SHA512.Create())
{
alg.ComputeHash(data);
return BitConverter.ToString(alg.Hash);
}
}
让它工作。摘自并稍加修改
public static string CreateSHAHash(string Phrase)
{
SHA512Managed HashTool = new SHA512Managed();
Byte[] PhraseAsByte = System.Text.Encoding.UTF8.GetBytes(string.Concat(Phrase));
Byte[] EncryptedBytes = HashTool.ComputeHash(PhraseAsByte);
HashTool.Clear();
return Convert.ToBase64String(EncryptedBytes);
}
更好的内存管理:
public static string SHA512Hash(string value)
{
byte[] encryptedBytes;
using (var hashTool = new SHA512Managed())
{
encryptedBytes = hashTool.ComputeHash(System.Text.Encoding.UTF8.GetBytes(string.Concat(value)));
hashTool.Clear();
}
return Convert.ToBase64String(encryptedBytes);
}
没有像我希望的那样工作。文档说明我需要将字符串转换为“SHA-2(512)Base64编码哈希”是的,好的,我没有仔细阅读标题,你应该在问题中提到“-2”部分。不知道在.NET中是否有SHA-2 512位实现,但可能是。你确定SHA512不是SHA-2吗?其他网站声明它是SHA-2 512位。你有预定义输入和输出的测试用例吗?那不是十六进制输出。。。它被某种方式编码了。您需要更好的文档。这不是返回“十六进制字符串”,而是返回base64编码的字符串。这不是返回“十六进制字符串”,而是返回base64编码的字符串。