使用SHA512加密字符串

时间:2014-05-15 17:07:45

标签: vb.net sha512

这是我的代码,我不知道它为什么会在控制台中产生奇怪的代码

(输出是" b5?2 ??????????????????? ??? ??? ??? ??? ??? ??? ??? ??? \ ??%?? A)_ ??? J&#34?;没有引号)

Private Sub TestSHA512()

    Dim key As String = "635357773463315343"
    Dim pass As String = "somepasswd"

    Dim enc As System.Text.Encoding = New System.Text.ASCIIEncoding

    Dim keyBytes() As Byte = enc.GetBytes(key)
    Dim passBytes() As Byte = enc.GetBytes(pass)

    Dim SHA As New HMACSHA512(keyBytes)

    Dim resultBytes() As Byte = SHA.ComputeHash(passBytes)

    Console.WriteLine(enc.GetString(resultBytes))
    Console.WriteLine(enc.GetString(SHA.Hash)) 'same...

End Sub

1 个答案:

答案 0 :(得分:5)

首先,SHA512是一种哈希算法,而不是加密方案,因此如果您尝试加密,那么SHA512就不是这样做的了。您需要查看加密类,例如AesManaged

ComputeHash将计算的哈希作为字节数组。您正在使用ASCIIEncoding.GetString将其转换为字符串,但并非每个字节都是可打印的ASCII字符。那就是你看到???的原因控制台输出中的字符。

如果您询问如何将哈希输出显示为可打印字符串,请使用Convert.ToBase64String,它将使用base64编码将字节数组转换为字符串。如果您期望它以十六进制表示,则可以遍历字节数组并打印每个字节的Hex()值。