基于MVC开发下的JWT ES256 解密方法

课题: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);

也能够顺利解决该问题

 

posted @ 2016-11-08 11:00  tomclock  阅读(3505)  评论(0编辑  收藏  举报