zoukankan      html  css  js  c++  java
  • 基于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);

    也能够顺利解决该问题

    Love it, and you live without it
  • 相关阅读:
    http协议介绍
    使用Bind提供域名解析服务
    .bash_profile和.bashrc的区别
    SNAT和DNAT
    9.Iptables与Firewalld防火墙
    ubuntu18.04.3新装系统安装QT5.14.1和环境配置
    【Navicat】如何激活成永久版本
    windows 安装配置mysql 8,以及远程连接访问
    fork子进程父进程死掉之后,getppid()不为1的解决办法
    ubuntu64运行32位程序安装过程
  • 原文地址:https://www.cnblogs.com/tomclock/p/6042172.html
Copyright © 2011-2022 走看看