課題:Portal端有經過加密過來的token(驗證信息)。后台服務器需要對其進行解密。
解決方法1
a. 采用Jose提供的Package
如下代碼:
string json = Jose.JWT.Decode(tokens[0], JwsAlgorithm.ES256);
各種方法試驗無法成功。
b.后經過Portal端提供的公開健:經過解析獲得
try
{
CngKey cng = EccKey.New(x, y, usage: usage);
string json = JWT.Decode(token, cng);
return json;
}
問題是,X,Y均是32位的Byte[] 數據,不知道如何生成,最后客戶直接提供。
解決方法2 利用R 語言
library(openssl)
library(jose)
jwt<-"eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiJ9.eyJjY2lfY29kZSI6Ijk5OTkiLCJ1dWlkIjoiOTllMzVjMDctOGU4NC00NGMwLWI2OTUtMGFiMTk2NTBiODY4IiwiZW1haWwiOiJrYW5la29Ac21pbGUtd29ya3MuY28uanAiLCJwc2V1ZG9ueW0iOiJhYzIwM2I2MDhlNWJiMDc4Iiwicm9sZXMiOlsiY2NpIl0sImlzcyI6InBvcnRhbC5jY2ktamlneW8uanAiLCJpYXQiOjE0NzcyOTY5OTZ9.Bryo17_lDpyTLZHhLzRzbglhll4nfLmFcuLuVkQ2lUufsGPzfONWT14VzZQDmh6_V3ZyiREChq7d3xg7tccDLQ"
(strings <- strsplit(jwt, ".", fixed = TRUE)[[1]])
base64url_decode(strings[2])
rawToChar(base64url_decode(strings[2]))
cat(rawToChar(base64url_decode(strings[2])))
問題順利解決。
R語言已經可以在VisualStuido2015Update3中順利安裝,有興趣可以自己玩。
解決方法3:直接用Jose.JWT中的Base64URL.Decode方法
string key = "xxxxx";
byte[] bytes = Jose.Base64Url.Decode(key);
Console.WriteLine(bytes.Length);
var json = Encoding.UTF8.GetString(bytes);
也能夠順利解決該問題
