0

我需要为要发送给第 3 方的 XML 字符串创建一个键控散列。这是我正在使用的代码,但它产生的哈希值与第 3 方发送给我的示例不同。我已经阅读了所有可以找到的教程,并一次又一次地重新阅读 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 编码,这就是我有最后一行的原因。

谢谢

4

2 回答 2

1

(阅读我的评论)
如果 My.Settings.PortalHASH 是 Base64 编码的密钥,您需要这样做:

Dim Key() As Byte = Convert.FromBase64String(My.Settings.PortalHASH)
于 2009-05-08T12:46:38.127 回答
0

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

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

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

于 2009-05-08T10:54:27.797 回答