如何在Powershell中实现二进制哈希字符串的Base64 URL安全编码?

问题描述 投票:0回答:2

我从服务器以“Base64 编码”形式获取“输入”as shown in picture

  1. 我需要将其解码为二进制字符串的原始形式。即
    original = base64_decode(input)
  2. 连接即
    to_be_hash =password (known value) + input
  3. 使用 SHA-256 对连接的字符串进行哈希处理。即
    binary_hash_str =sha256(to_be_hash)

我需要对上面的二进制哈希字符串进行 Base64 URL 安全编码,以使其适合 HTTP 请求。

final_hash = base64_url_safe_encode(binary_hash_str)

我为此使用 powershell。有人可以指导我如何进步吗?

powershell encoding hash binary base64
2个回答
3
投票

如果我理解正确的话,您想发送一个 base64 字符串作为 url 中的参数吗?您可以使用

[uri]::EscapeDataString()

转义 url 中不可接受的字符
$text = "some text!!"
$bytes = [System.Text.Encoding]::Unicode.GetBytes($text)
$base64 = [System.Convert]::ToBase64String($bytes)
$urlSafeString = [uri]::EscapeDataString($base64)

"Base64        : " + $base64
"urlSafeString : " + $urlSafeString

Base64        : cwBvAG0AZQAgAHQAZQB4AHQAIQAhAA==
urlSafeString : cwBvAG0AZQAgAHQAZQB4AHQAIQAhAA%3D%3D


0
投票

此处显示了执行此操作的正确方法:https://www.powershellgallery.com/packages/Posh-ACME/2.0.1/Content/Private%5CConvertTo-Base64Url.ps1

Base64Url-encode 与 Base64-encode + Url-encode 不同。

© www.soinside.com 2019 - 2024. All rights reserved.