0

何らかの理由で、sha512 ハッシュを計算して文字列に変換するたびに、最後の 2 文字が == になります。理由はありますか?

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 に答える