我正在尝试使用PowerShell代码创建一个散列,以使用Kamstrup来确认READy订阅。但是,在确认订阅时,我会收到以下错误。

然后,我尝试在他们的文件(已确认)中重新创建示例哈希。我一直得到一个与它们的示例散列不匹配的不同结果。
$message = @'
{
"verificationToken" : "e6557603-9121-4c9b-9c38-1a33f56204b0"
}
'@
$secret = '6KVQ05mN9iLvCg=='
$hmacsha = New-Object System.Security.Cryptography.HMACSHA256
$hmacsha.key = [Convert]::FromBase64String($secret)
$signature = $hmacsha.ComputeHash([Text.Encoding]::ASCII.GetBytes($message.ToString()))
$signature = [Convert]::ToBase64String($signature)
echo $signature
$ExpectedHash = 'jm+Inr5EVDgLHbpZaTVjInllgm8Ogs7Ok9mLePiciNc='
$ReturnedHash = 'Zo5DukhFluumI/RchKOPQOBheY7rlnzOFLD+A0aBbDk='我现在有点卡住了。我希望它必须对消息的格式做些什么。
发布于 2021-09-26 12:08:04
链接到的文档声明必须散列验证令牌--而不是整个消息。
首先,必须使用verificationToken并使用客户端机密(在READyManager中创建的Base64值)和SHA256对其进行散列。
将代码更正为只使用验证令牌,我将得到预期的哈希返回。
# $message = '{ "verificationToken" : "e6557603-9121-4c9b-9c38-1a33f56204b0" }'
$message = 'e6557603-9121-4c9b-9c38-1a33f56204b0'
$secret = '6KVQ05mN9iLvCg=='
$hmacsha = New-Object System.Security.Cryptography.HMACSHA256
$hmacsha.key = [Convert]::FromBase64String($secret)
$signature = $hmacsha.ComputeHash([Text.Encoding]::Default.GetBytes($message.ToString()))
$signature = [Convert]::ToBase64String($signature)
echo $signature
$ExpectedHash = 'jm+Inr5EVDgLHbpZaTVjInllgm8Ogs7Ok9mLePiciNc='
$ReturnedHash = 'Zo5DukhFluumI/RchKOPQOBheY7rlnzOFLD+A0aBbDk='输出:
H:\Temp> .\testps.ps1
jm+Inr5EVDgLHbpZaTVjInllgm8Ogs7Ok9mLePiciNc=RTFM的一个简单案例:-)
https://stackoverflow.com/questions/69334638
复制相似问题