JWT是一种加密算法,为了防止请求的信息在传输途中被拦截修改

JWT的引用:

install-package jwt

JWF由三部分组成:Header,Payload,Signature

Payload中放的是传输的数据

Header和Payload部分的内容是Base64编码,可以轻松的解码,所以Payload中不要放机密信息

Signature是Header,Payload和SecretKey(秘钥) 的内容合在一起进行加密得到的,所以没有秘钥的人绝对解不开,而且其中某个部分被改动后就会匹配不上,从而防止被拦截修改

加密

//要传输的数据
var payload = new Dictionary<string, object>
{
{ "UserId", },
{ "UserName", "admin" }
};
//秘钥,注意不要泄露
var secret = "XXXXXXXXX"; IJwtAlgorithm algorithm = new HMACSHA256Algorithm();
IJsonSerializer serializer = new JsonNetSerializer();
IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
IJwtEncoder encoder = new JwtEncoder(algorithm, serializer, urlEncoder); string token = encoder.Encode(payload, secret); //加密

解密

var token="aaaaaaa.bbbbbbbbbbb.cccccccccccc"; //加密后的数据
var secret = "XXXXXXXXXXXXX"; //秘钥
try
{
IJsonSerializer serializer = new JsonNetSerializer();
IDateTimeProvider provider = new UtcDateTimeProvider();
IJwtValidator validator = new JwtValidator(serializer, provider);
IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
IJwtDecoder decoder = new JwtDecoder(serializer, validator, urlEncoder); var json = decoder.Decode(token, secret, verify: true); //解密 }
catch (TokenExpiredException)
{
Console.WriteLine("Token has expired");
}
catch (SignatureVerificationException)
{
Console.WriteLine("Token has invalid signature");
}

如果要设置过期时间就在payload中添加一个名为exp的值,这个值给过期时间到1970/1/1 00:00:00期间的秒数

double exp = (DateTime.UtcNow.AddSeconds() - new DateTime(, , )).TotalSeconds; //获取当前时间,在它之上增加10秒,减去1970/1/1,转为秒

如果此数据在过期时间之后才传到,就会失效

最新文章

  1. iOS中关于NavigationController中preferredStatusBarStyle一直不执行的问题
  2. JavaScript在A页面判断B页面加载完毕(iframe load)
  3. Tomcat Shell脚本(启动|关闭|重启|状态)
  4. mac iterm2配置
  5. 省市二级联动(原生JS)
  6. JSONP实现跨域
  7. 针对SYN洪水攻击的防御措施
  8. HttpSession--会话
  9. 关于malloc申请的动态内存的问题
  10. SQL SERVER 复制相关存储过程
  11. iOS开发——网络编程Swift篇&amp;(三)同步Get方式
  12. 转:理解 Linux 的硬链接与软链接
  13. 看了一个烟花的html作品 --引用:http://www.w3cfuns.com/blog-5444049-5404365.html
  14. 【Spark2.0源码学习】-10.Task执行与回馈
  15. 32位汇编第四讲,干货分享,汇编注入的实现,以及快速定位调用API的数量(OD查看)
  16. 纠错式教学法对比鼓励式教学法 -----Lily、贝乐、英孚,乐加乐、剑桥国际、优学汇、北外青少
  17. linux操作命令 开发人员需要掌握的一些命令
  18. Java内存泄漏定位
  19. MonkeyRunner 之如何获取APP的Package Name和Activity Name
  20. JavaBeansDataExchange could not instantiate result class

热门文章

  1. Project Euler 32 Pandigital products
  2. HDU1058 - Humble Numbers
  3. nyoj212-k尾相等数
  4. 51nod-活动安排问题
  5. 修改linux新建账户时的过期时间
  6. Linux下MATLAB安装及使用
  7. 00068_Date类
  8. 0113针对大数据量SUM的优化-思路
  9. [Asp.net]EF更新之后要 保存
  10. plsql解决64位解决办法