package require sha256
proc base64url_encode {string} {
tailcall string map {+ - / _ = {}} [binary encode base64 $string]
}
proc base64url_decode {string} {
tailcall binary decode base64 [string map {- + _ /} $string]
}
set header {{"alg":"HS256","typ":"JWT"}}
set payload {{"loggedInAs":"admin","iat":1422779638}}
set key {secretkey}
set unsignedToken "[base64url_encode $header].[base64url_encode $payload]"
set signature [base64url_encode [::sha2::hmac -bin -key $key $unsignedToken]]
set token "$unsignedToken.$signature"
puts $token
所以按照參考資料,寫了一個簡單的修正,然後編碼就正確了。
小知識: base64 != base64Url
* 更新:加入 decode 的部份
沒有留言:
張貼留言