original = base64_decode(input)
。to_be_hash =password (known value) + input
。binary_hash_str =sha256(to_be_hash)
。我需要对上面的二进制哈希字符串进行 Base64 URL 安全编码,以使其适合 HTTP 请求。
final_hash = base64_url_safe_encode(binary_hash_str)
我为此使用 powershell。有人可以指导我如何进步吗?
如果我理解正确的话,您想发送一个 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
此处显示了执行此操作的正确方法:https://www.powershellgallery.com/packages/Posh-ACME/2.0.1/Content/Private%5CConvertTo-Base64Url.ps1
Base64Url-encode 与 Base64-encode + Url-encode 不同。