2012-07-20 71 views
0

由于某种原因,我每次计算sha512散列并将其转换为字符串时,最后两个字符都是==。任何想法为什么?.NET - 计算SHA512与SHA512Managed - 为什么两个“==”转换为字符串时?

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

它是您看到的Base64填充:Base64以3个字节转换4个字节的组,这意味着最后编码的组不会总是完整 - 取决于输入字符串的长度,它将包含1,2或3个字节。这是通过填充来解决,而你在这里看到的==是在3

完整的解释最后编码组只具有1个字节使用可引起对Wikipedia

+0

中查到,但是哈希确实有64个字节,从0-63。 – 2012-07-20 18:50:54

+0

@WFF_Angel和64模3是? ......确切地说:-) – fvu 2012-07-20 20:58:59

相关问题