如何在.NET 6中无需外部库计算SHA512/256或SHA512/224?
在.NET 6中不依赖外部库计算SHA512/256或SHA512/224的方法
在.NET 6中,原生支持SHA512哈希计算。SHA512/256和SHA512/224本质是SHA512的变体,无需额外依赖外部库,只需对SHA512的计算结果做截断处理即可:SHA512/256取结果前256位(32个字节),SHA512/224取结果前224位(28个字节)。
示例代码
计算SHA512/256哈希值
public string GetHashStringSHA512_256(string data) { using (SHA512 sha512 = SHA512.Create()) { byte[] fullHash = sha512.ComputeHash(Encoding.UTF8.GetBytes(data)); // 截取前32个字节作为SHA512/256结果 byte[] truncatedHash = fullHash.Take(32).ToArray(); StringBuilder builder = new StringBuilder(); foreach (byte b in truncatedHash) { builder.Append(b.ToString("x2")); } return builder.ToString(); } }
计算SHA512/224哈希值
public string GetHashStringSHA512_224(string data) { using (SHA512 sha512 = SHA512.Create()) { byte[] fullHash = sha512.ComputeHash(Encoding.UTF8.GetBytes(data)); // 截取前28个字节作为SHA512/224结果 byte[] truncatedHash = fullHash.Take(28).ToArray(); StringBuilder builder = new StringBuilder(); foreach (byte b in truncatedHash) { builder.Append(b.ToString("x2")); } return builder.ToString(); } }
完整SHA512哈希计算
public string GetHashStringSHA512(string data) { using (SHA512 sha512 = SHA512.Create()) { byte[] bytes = sha512.ComputeHash(Encoding.UTF8.GetBytes(data)); StringBuilder builder = new StringBuilder(); for (int i = 0; i < bytes.Length; i++) { builder.Append(bytes[i].ToString("x2")); } return builder.ToString(); } }
内容的提问来源于stack exchange,提问作者Akif T
相关产品推荐
相关产品推荐

