2012-07-20 1 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 преобразует группы из 4 байтов в 3 байта, что означает, что последняя кодированная группа не всегда будет полной - в зависимости от длины входной строки она будет содержать 1, 2 или 3 байта. Это решается путем заполнения и == вы видите здесь вызвана тем, что только 1 байт использованного в последней закодированной группе 3.

Полное объяснение можно найти на Wikipedia

+0

Но хэш имеет 64 байта , от 0 до 63. –

+0

@WoF_Angel И 64 мод 3 есть? ... В точку :-) – fvu

Смежные вопросы