首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SHA256中创建HMAC SHA256散列

在SHA256中创建HMAC SHA256散列
EN

Stack Overflow用户
提问于 2021-09-26 11:52:25
回答 1查看 311关注 0票数 0

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

然后,我尝试在他们的文件(已确认)中重新创建示例哈希。我一直得到一个与它们的示例散列不匹配的不同结果。

代码语言:javascript
复制
$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='

我现在有点卡住了。我希望它必须对消息的格式做些什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-26 12:08:04

链接到的文档声明必须散列验证令牌--而不是整个消息。

首先,必须使用verificationToken并使用客户端机密(在READyManager中创建的Base64值)和SHA256对其进行散列。

将代码更正为只使用验证令牌,我将得到预期的哈希返回。

代码语言:javascript
复制
# $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='

输出:

代码语言:javascript
复制
H:\Temp> .\testps.ps1
jm+Inr5EVDgLHbpZaTVjInllgm8Ogs7Ok9mLePiciNc=

RTFM的一个简单案例:-)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69334638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档