在VB.NET中使用HmacSHA256加密字符串的正确方法

时间:2009-05-08 10:49:34

标签: vb.net hash encryption hmac sha256

我需要为要发送给第三方的XML字符串创建一个键控哈希。这是我正在使用的代码,但它产生的哈希值与第三方发送给我的示例不同。我已经浏览了所有可以找到的教程,并一次又一次地重新阅读MSDN。我究竟做错了什么?或者我应该怀疑另一端有问题吗?

Public Shared Function HashString(ByVal StringToHash As String) As String
    Dim myEncoder As New System.Text.UTF32Encoding
    Dim Key() As Byte = myEncoder.GetBytes(My.Settings.PortalHASH)
    Dim XML() As Byte = myEncoder.GetBytes(StringToHash)
    Dim myHMACSHA256 As New System.Security.Cryptography.HMACSHA256(Key)
    Dim HashCode As Byte() = myHMACSHA256.ComputeHash(XML)
    Return Convert.ToBase64String(HashCode)
End Function

它需要是base-64编码的,这就是为什么我有最后一行。

由于

2 个答案:

答案 0 :(得分:1)

(阅读我的评论)
如果My.Settings.PortalHASH是Base64编码的密钥,则需要执行此操作:

Dim Key() As Byte = Convert.FromBase64String(My.Settings.PortalHASH)

答案 1 :(得分:0)

我无法评论VB的正确性,但从命名的显而易见性来看,我可以说它看起来是正确的。

所以这里没有足够的信息说错了什么;你可能已经说过你所知道的一切了。因此,为您验证这一点的人将是您的第三方。他们可以说出了什么问题。

PS:奇怪的是,对方发送的nonce没有作为挑战?