【发布时间】:2018-03-13 15:53:15
【问题描述】:
我必须在 Visual Basic 中生成 HMACSHA256。问题是,我没有收到正确的 HMAC 并得到不同的 HMACS
输入数据 = 测试\n测试\n\n测试
秘密 = c39ff802b43a01c08ea759750c41d7d4bac6b1b884b3864d640b577cf1dca21a
HMACa = 330c55857e5ff197a407a9dcd41bbf03a2e8de0b351aba9a405139919b3cae57
HMACb = f701ea7028f20df11a52bee297a336de212655a8bad01d848eeaa87d0f76ee5e
JS(CryptoJS) -> HMACa(直接测试)
PY -> HMACa(直接测试)
JS(jsSHA) -> HMACb(测试于:liavaag.org/English/SHA-Generator/HMAC/)
C#/VB -> HMACb(直接测试)
为什么我会得到不同的 HMAC 以及如何在 VB/C# 中得到 HMACa??
这是我的 VB 代码:
Sub Main()
Dim sToHash As String = "Test\nTest\n\nTest"
Dim sKey As String = "c39ff802b43a01c08ea759750c41d7d4bac6b1b884b3864d640b577cf1dca21a"
Console.WriteLine(getHMAC(sToHash, sKey))
End Sub
Function getHMAC(ToHash As String, SecretKey As String) As String
Dim aoText() As Byte = System.Text.Encoding.UTF8.GetBytes(ToHash)
Dim aoKey() As Byte = System.Text.Encoding.UTF8.GetBytes(SecretKey)
Using oHmac As New System.Security.Cryptography.HMACSHA256(aoKey)
Dim sHash As Byte() = oHmac.ComputeHash(aoText)
Return ByteToString(sHash)
End Using
End Function
Function ByteToString(buff As Byte()) As String
Dim getbinary As String = ""
For i As Integer = 0 To buff.Length - 1
getbinary += buff(i).ToString("X2")
Next
Return (getbinary).ToLower
End Function
【问题讨论】:
标签: javascript cryptography hmac basic