如何在Powershell中实现二进制哈希串的Base64 URL安全编码
Powershell 实现指定加签流程代码
直接复制以下代码,替换前两行的变量值即可运行:
# 请替换为实际的已知密码、从服务器获取的Base64输入 $knownPassword = "替换为你的实际密码" $base64Input = "替换为服务器返回的Base64字符串" # 1. 解码Base64输入为原始二进制字节数组 $originalBytes = [Convert]::FromBase64String($base64Input) # 2. 拼接待哈希内容,转为UTF8编码字节数组 # 注意:如果要求拼接的是「密码+解码后的原始内容」,可参考下文的调整方案 $toHashContent = $knownPassword + $base64Input $toHashBytes = [System.Text.Encoding]::UTF8.GetBytes($toHashContent) # 3. 计算SHA256哈希值 $sha256Provider = [System.Security.Cryptography.SHA256]::Create() $hashBinaryBytes = $sha256Provider.ComputeHash($toHashBytes) # 4. 转为URL安全的Base64编码 $normalBase64 = [Convert]::ToBase64String($hashBinaryBytes) $finalHash = $normalBase64.Replace('+', '-').Replace('/', '_').TrimEnd('=') # 输出最终结果 Write-Host "最终哈希值:$finalHash"
常见调整方案
- 若步骤2要求拼接的是「已知密码 + Base64解码后的原始文本内容」,替换步骤2的代码为:
$originalStr = [System.Text.Encoding]::UTF8.GetString($originalBytes) $toHashContent = $knownPassword + $originalStr $toHashBytes = [System.Text.Encoding]::UTF8.GetBytes($toHashContent)
- 若解码后的原始内容是二进制非文本数据,直接拼接字节数组即可:
$pwdBytes = [System.Text.Encoding]::UTF8.GetBytes($knownPassword) $toHashBytes = $pwdBytes + $originalBytes
- 若内容编码不是UTF8,将代码中的
[System.Text.Encoding]::UTF8替换为对应编码即可,例:ASCII编码替换为[System.Text.Encoding]::ASCII。
内容的提问来源于stack exchange,提问作者Elizabeth
相关产品推荐
相关产品推荐

