出于某种原因,每当我计算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
谢谢!
答案 0 :(得分:1)
Base64字符串可以根据要编码的字节数以=或==结尾。见http://en.wikipedia.org/wiki/Base64#Padding
答案 1 :(得分:0)
这是你看到的Base64填充:Base64转换3个字节的4个字节的组,这意味着最后一个编码组并不总是完整的 - 根据输入字符串的长度,它将包含1,2或3个字节。这是通过填充来解决的,你在这里看到的==
是由最后编码的3组中只有1个字节引起的。
可以在Wikipedia
上找到完整的说明