使用SHA512加密字符串

Ron*_*ovi 0 vb.net sha512

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

(输出是"b5?2 ?????????????????????????????????????????????? _ ??? J·" 没有引号)

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
Run Code Online (Sandbox Code Playgroud)

pmc*_*ane 5

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

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

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