.NET - 使用SHA512Managed计算SHA512 - 转换为字符串时为什么两个“==”?

时间:2012-07-20 17:48:42

标签: vb.net sha512

出于某种原因,每当我计算sha512哈希并将其转换为字符串时,最后两个字符为==。知道为什么吗?

Function GetSHA512FromStringAsString(ByVal strdata As String)
    Dim data As Byte() = StringToByte(strdata)
    Dim result() As Byte
    Dim shaM As New SHA512Managed()
    result = shaM.ComputeHash(data)

    Return ByteToString(result)
End Function


Function ByteToString(ByVal dBytes() As Byte)
        Dim strText = Convert.ToBase64String(dBytes)
        Return strText
End Function

谢谢!

2 个答案:

答案 0 :(得分:1)

Base64字符串可以根据要编码的字节数以=或==结尾。见http://en.wikipedia.org/wiki/Base64#Padding

答案 1 :(得分:0)

这是你看到的Base64填充:Base64转换3个字节的4个字节的组,这意味着最后一个编码组并不总是完整的 - 根据输入字符串的长度,它将包含1,2或3个字节。这是通过填充来解决的,你在这里看到的==是由最后编码的3组中只有1个字节引起的。

可以在Wikipedia

上找到完整的说明