0

出于某种原因,每次我计算 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

谢谢!

4

2 回答 2

1

基于被编码的字节数,Base64 字符串可以以 = 或 == 结尾。见http://en.wikipedia.org/wiki/Base64#Padding

于 2012-07-20T17:56:33.100 回答
0

这是您看到的 Base64 填充:Base64 将 4 个字节的组转换为 3 个字节,这意味着最后一个编码组并不总是完整的 - 取决于输入字符串的长度,它将包含 1、2 或 3 个字节。这可以通过填充解决,==您在此处看到的原因是最后一个编码组 3 中只有 1 个已使用字节。

完整的解释可以在维基百科上找到

于 2012-07-20T17:59:52.070 回答