JWT

JWT原理图:

JWT的数据结构
jwt头:JWT头部分是一个描述JWT元数据的JSON对象
有效载荷:七个默认字段+自定义私有字段
签名=HMACSHA256(base64UrlEncode(header) + “.” + base64UrlEncode(payload),secret

JWT由头部(header)载荷(payload)签证(sign)三部分构成
jwt的头部包含两部分信息:
声明类型,这里是jwt
声明加密的算法 通常直接使用 HMAC SHA256
然后将头部进行base64加密(该加密是可以对称解密的),构成了第一部分。

# JWT头部分是一个描述JWT元数据的JSON对象,通常如下所示。
{"alg": "HS256",
"type": "JWT"
}
# 1)alg属性表示签名使用的算法,默认为HMAC SHA256(写为HS256);
# 2)type属性表示令牌的类型,JWT令牌统一写为JWT。
# 3)最后,使用Base64 URL算法将上述JSON对象转换为字符串保存。

载荷就是存放有效信息的地方。这些有效信息包含三个部分:
标准中注册声明
私有的声明
公共的声明 :
公共的声明可以添加任何的信息,一般添加用户的相关信息或其他业务需要的必要信息.但不建议添加敏感信息,因为该部分在客户端可解密。
私有的声明 :
私有声明是提供者和消费者所共同定义的声明,一般不建议存放敏感信息,因为base64是对称解密的,意味着该部分信息可以归类为明文信息。
有效载荷部分,是JWT的主体内容部分,也是一个JSON对象,包含需要传递的数据。 JWT指定七个默认字段供选择。

'''
iss:发行人
exp:到期时间
sub:主题
aud:用户
nbf:在此之前不可用
iat:发布时间
jti:JWT ID用于标识该JWT
'''#2、除以上默认字段外,我们还可以自定义私有字段,如下例:
{"sub": "1234567890",
"name": "chongchong",
"admin": true
}#3、注意
默认情况下JWT是未加密的,任何人都可以解读其内容,因此不要构建隐私信息字段,存放保密信息,以防止信息泄露。
JSON对象也使用Base64 URL算法转换为字符串保存。

jwt的第三部分是一个签证信息,这个签证信息由三部分组成
header (base64后的)
payload (base64后的)
secret·10
将上面的两个编码后的字符串都用句号.连接在一起(头部在前),就形成了:JWT

# 1.签名哈希部分是对上面两部分数据签名,通过指定的算法生成哈希,以确保数据不会被篡改。
# 2.首先,需要指定一个密码(secret),该密码仅仅为保存在服务器中,并且不能向用户公开。
# 3.然后,使用标头中7指定的签名算法(默认情况下为HMAC SHA256)根据以下公式生成签名。
# 4.HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload),secret)
# 5.在计算出签名哈希后,JWT头,有效载荷和签名哈希的三个部分组合成一个字符串,每个部分用"."分隔,就构成整个JWT对象。

JWT方案中安全性问题
jwt是存储在客户端的,服务器端不需要存储jwt的,客户端每次发送请求时会携带该token,然后到服务器端会验证token是否正确,是否过期了,然后会通过解码出携带的用户的信息的,但是如果token在传输的过程中被攻击者截取了的话,那么对方就可以伪造请求,利用窃取到的token模拟正常请求,实现用户的正常操作,而服务器端完全不知道,因为JWT在服务器端是无状态的,且服务器端不存储jwt的。其实jwt解决的问题是认证和授权的问题,对于安全性的话,还是建议对外公布的接口使用https.

JSON Web Token 它有如下优点:

  1. 可以适用于分布式的单点登录场景。
  2. 可以使用跨域认证解决方案。
  3. jwt实现自动刷新token的方案(待认证)。

jwt核心
   1)给用户颁发的token值相当于一把锁,服务器端的秘钥相当于一把钥匙
   2)每次客户端请求都会携带这把锁,服务器端用秘钥去开这把锁,如果无法打开就证明是伪造的

无状态登录:
服务器不保存用户的登录信息,由客户端请求携带自己的身份信息。服务器不再保存用户的登录信息,多次请求不用访问回到同一台服务,服务器可以弹性伸缩,减小服务端压力,缺点一旦JWT签发,在有效期内将会一直有效

对称加密:

对称加密指的就是加密和解密使用同一个秘钥,所以叫做对称加密。对称加密只有一个秘钥,作为私钥。
常见的对称加密算法有DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES

对称加密


优点:
算法公开、计算量小、加密速度快、加密效率高

缺点:
在数据传送前,发送方和接收方必须商定好秘钥,然后 使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。

非对称加密:

非对称加密指的是:加密和解密使用不同的秘钥,一把作为公开的公钥,另一把作为私钥。公钥加密的信息,只有私钥才能解密。

公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

非对称加密算法实现机密信息交换的基本过程是:
甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。

私钥加密的信息,只有公钥才能解密。
常见的非对称加密算法有:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)

优点:
安全

缺点:
速度较慢

非对称加密

对称加密和非对称加密的区别

如果通过md5加密,网关需要每次访问授权中心去通信验证,微服务需要多次访问授权中心去解密jwt,网络请求频率高,授权中心压力过大。而通过非对称加密则不存在这个问题。用公钥即可解密header(头部)与payload(载荷)。

1、加密和解密过程不同

对称加密过程和解密过程使用的同一个密钥,加密过程相当于用原文+密钥可以传输出密文,同时解密过程用密文-密钥可以推导出原文。但非对称加密采用了两个密钥,一般使用公钥进行加密,使用私钥进行解密。

2、加密解密速度不同

对称加密解密的速度比较快,适合数据比较长时的使用。非对称加密和解密花费的时间长、速度相对较慢,只适合对少量数据的使用。

3、传输的安全性不同

对称加密的过程中无法确保密钥被安全传递,密文在传输过程中是可能被第三方截获的,如果密码本也被第三方截获,则传输的密码信息将被第三方破获,安全性相对较低。

非对称加密算法中私钥是基于不同的算法生成不同的随机数,私钥通过一定的加密算法推导出公钥,但私钥到公钥的推导过程是单向的,也就是说公钥无法反推导出私钥。所以安全性较高。

JWT对称加密非对称加密相关推荐

  1. Linux系统安全概述-sudo授权-pam认证机制-对称加密-非对称加密-md5-数字证书

    内容: 17.1 Linux系统安全概述-su-sudo授权 17.2 pam认证机制概述 17.3 对称加密-非对称加密方法 17.4 md5-sha1-哈希算法使用方法 17.5 CA证书的作用 ...

  2. 【kong系列十一】之JWT插件RSA256非对称加密使用

    1  为用户创建JWT RSA256证书 利用postman工具发送restfull请求 请求地址:http://${konghost}:8001/consumers/${consumerId}/jw ...

  3. Linux加密和安全篇(一)gpg、对称和非对称加密、哈希算法

    对于linux运维工作者而言,加密技术已经很早就用于数据的存储和数据之间的交换.我们可以会为了防止你的网站.服务器或者系统,我们会使用一些手段来防止一些恶意的攻击或者访问.一下就对linux的安全和加 ...

  4. HTTPS(对称加密+非对称加密+证书)

    目录 1. 加密和解密 HTTPS工作过程 2. 对称加密 3. 对称加密 4. 既然都有非对称加密了,那为啥还要有对称加密 5. 中间人攻击 6. 引入证书 HTTPS 也是一个应用层协议. 是在 ...

  5. 对称加密非对称加密混合加密

    对称加密&非对称加密&混合加密 写于前 iOS中常在哪些场景应用到 写一个系列 本文概要 对称加密(Symmetric Cryptography) 非对称加密(ASymmetric C ...

  6. 对称加密 非对称加密

    目录 一.加解密算法 二.算法体系 三.对称加密 四.非对称加密 五.混合加密机制 六.DES加密原理 七.3DES加密原理 八.AES加密原理 九.RSA加密原理 十.EIGamal加密原理 十一. ...

  7. 隐私计算加密技术基础系列(下)对称与非对称加密的应用场景

    本章是<隐私计算加密技术基础>系列文章的最后一篇,感慨下,终于写完了,这个春节假期除了陪家人就是写着三篇文章了.其实写之前并没有觉得是多么难的事情,感觉这些原理自己都比较清楚,但是随着写的 ...

  8. 对称加密非对称加密怎么一起使用(初级版)

    对称加密 加密和解密使用相同的密钥,使用一把钥匙,所以叫对称加密,对称 加密包括多种算法,如:DES,3DES,AES 加密长度一般小于256位,防止数据被泄. 优点:加密和解密的速度快.缺点:因为使 ...

  9. 在线支付系列【3】支付安全之对称和非对称加密

    有道无术,术尚可求,有术无道,止于术. 文章目录 前言 信息安全 加密机制 核心概念 对称加密 非对称加密 JCE 对称加解密 1. 创建密钥 2. 加密 3. 解密 非对称加解密 1. 创建密钥 2 ...

  10. 网络知识详解之:HTTPS通信原理剖析(对称、非对称加密、数字签名、数字证书)

    网络知识详解之:HTTPS通信原理剖析(对称.非对称加密.数字签名.数字证书) 计算机网络相关知识体系详解 网络知识详解之:TCP连接原理详解 网络知识详解之:HTTP协议基础 网络知识详解之:HTT ...

最新文章

  1. C语言写一函数交换两变量的值
  2. 编译bluez-5.25 通过 Linux环境下运行
  3. ASP.NET Core 管道再探
  4. cmd pc如何开多个微信_抖音打击刷赞刷粉,240多个百万粉丝大V被封;微信PC版再更新...
  5. 关闭不必要动画,提升 Win 7 运行速度
  6. winform 只允许显示一个子窗体
  7. YOLOv2相比于yolov1的改进
  8. java 加载dll文件
  9. VASP_Si的能带结构计算_步骤整理
  10. 大型C语言打怪小游戏——神魔
  11. Gateway原理及实例
  12. 那些惊艳的算法—时间轮任务调度(sunwind整理)
  13. 03比对与 bam 文件格式
  14. html移动轮播后盾网,后盾网lavarel视频项目---Vue项目使用vue-awesome-swiper轮播插件...
  15. 限幅二极管基础知识详解
  16. magento 货币换算
  17. react中使用AlipayJSBridge 支付宝支付调用接口在H5网页的应用
  18. ~scanf()简析
  19. 郑晓龙新剧携手吴秀波、孙俪 被曝8月将开拍
  20. 计算机语言之Pascal语言

热门文章

  1. 双活数据中心技术架构(PDF版)
  2. 叶明哲 | 数据中心空调那点事
  3. c语言程序开发中连接是,C语言中等待socket连接和对socket定位的方法
  4. ML之FE:对pandas的dataframe中的类别型字段进行数字编码化(类别型特征数值化)并导出映射表daiding
  5. Py之pandas:利用where、replace等函数对dataframe格式数据按照条件进行数据替换
  6. Python之nyoka:nyoka库函数的简介、安装、使用方法之详细攻略
  7. ML之UL:无监督学习Unsupervised Learning的概念、应用、经典案例之详细攻略
  8. CV之FRec之ME/LF:人脸识别中常用的模型评估指标/损失函数(Triplet Loss、Center Loss)简介、使用方法之详细攻略
  9. IDE之Visual Studio Code:Visual Studio Code的简介、安装、使用方法之详细攻略
  10. oracle pl/sql 中目录的创建