课题: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);
也能够顺利解决该问题