上一篇文章讲了下JTW加密机制,这期给大家说说怎么解密,以及获取appsettings.json配置信息。
1、获取appsettings.json配置信息
创建DecodeJwt类
public static IConfiguration Configuration { get; set; }
static DecodeJwt()
{
//ReloadOnChange = true 当appsettings.json被修改时重新加载
Configuration = new ConfigurationBuilder()
.Add(new JsonConfigurationSource { Path = "appsettings.json", ReloadOnChange = true
})
.Build();
}
2、解析Jwt密文
// 用于解码token 用到jose-jwt包
public static string decode(string tokenToDecode)
{
string token = Jose.JWT.Decode(
tokenToDecode,
/*DecodeJwt.Configuration["Jwt:Secret"] 为在appsettings.json中配置的信息*/
Encoding.UTF8.GetBytes(DecodeJwt.Configuration["Jwt:Secret"]),
JweAlgorithm.PBES2_HS512_A256KW,
JweEncryption.A128CBC_HS256, // 加密算法
null
);
Console.WriteLine(token);
return token;
}
解析下来的格式如下:

3、完整代码如下:
using Jose;
using Microsoft.Extensions.Configuration;
using System.Text;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.Json;
namespace JwtServer.Core
{
public class DecodeJwt
{
public static IConfiguration Configuration { get; set; }
static DecodeJwt()
{
//ReloadOnChange = true 当appsettings.json被修改时重新加载
Configuration = new ConfigurationBuilder()
.Add(new JsonConfigurationSource { Path = "appsettings.json", ReloadOnChange = true
})
.Build();
}
// 用于解码token 用到jose-jwt包
public static string decode(string tokenToDecode)
{
string token = Jose.JWT.Decode(
tokenToDecode,
Encoding.UTF8.GetBytes(DecodeJwt.Configuration["Jwt:Secret"]),
JweAlgorithm.PBES2_HS512_A256KW,
JweEncryption.A128CBC_HS256, // 加密算法
null
);
Console.WriteLine(token);
return token;
}
}
}
