MSDN的官方文档说
SHA512Managed算法的哈希大小为512位。
当我运行以下代码时
byte[] dataToEncode = Encoding.UTF8.GetBytes("Hello Worlds");
SHA512Managed sha = new SHA512Managed();
byte[] hashedData = sha.ComputeHash(dataToEncode);
string hashedDataString = Convert.ToBase64String(hashedData);
我的HasheDataString只有64长(hashedDataString.Length),而hasheData只有64长(hashedData.Length)。究竟是什么 512?
答案 0 :(得分:3)
512bits表示二进制,1和0的大小。当您将其转换为字符串时,所有1和0都将成为字符,每个字符由8位组成。那么你有512位,每个字符8位,每个字符串64个字符。
答案 1 :(得分:3)
每个字节有8位,因此64字节是64 * 8 = 512位。
64字节的base64编码字符串长度为88个字符。 base64编码在每个字符中存储六位,因此512位需要512 / 6~85.3个字符,再加上两个额外字符才能达到一个四字符边界。
答案 2 :(得分:0)
user3547774问题有拼写错误,HasheDataString长度为88个字符。
Guffa有很好的回应。
关于c#字符串: Each character in a string is defined by a Unicode scalar value ... encoded by using UTF-16
因此,Base64编码仅使用每个字符16位的6位来编码数据。