SHA512Managed hashSize

时间:2014-10-10 07:43:43

标签: c# hash sha512

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?

3 个答案:

答案 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位来编码数据。