IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> [案例]PGP RSA JWT使用及案例总结 -> 正文阅读

[网络协议][案例]PGP RSA JWT使用及案例总结

1 背景

最近的项目主要做的是公对公的API互通,因为是银行系统,公对公的API传输加密要求比较高,架构师要求使用的是PGP, RSA的加解密,因此,针对这几个技术,学习并且记录一些心得。

2 基础概念

2.1 RSA

RSA加密算法是一种非对称加密算法。同属于非对称加密算法的还有DSA和ECC
RSA名称的由来是由三位研究出此算法的学者名称命名的,即RSA(Rivest-Shamir-Adleman)
非对称加密更被人熟知的是“公钥”“私钥”

2.1.1 其他几种加密算法及对比

2.1.1.1 对称加密算法 - 可逆

对称加密算法是指加密和解密采用相同的密钥,是可逆的(即可解密)。常用的有AES、DES、3DES。

使用场景

  • 用zip打包时输入的密码,同一个密码可以加密,也可以解密
  • 一些文件加密软件,输入同一个密码就能加密解密
  • 部分网站的登录密码在数据库保存时使用系统的密码进行加密 - 那些提供“找回密码”功能的网站(当然,有些网站可能就是明文存储密码的)

优点:

  1. 实现简单
  2. 加解密算法比较快

缺点:

  1. 发加密文件给别人,密码就必须给到对方,如果文件被截取,密码被截取,那窃取方就能知道文件内容了。

2.1.1.2 非对称加密算法-可逆

非对称加密算法是指加密和解密采用不同的密钥(公钥和私钥)是可逆的(即可解密)。

RSA加密算法既可以用来做数据加密,也可以用来数字签名。
–数据加密过程:发送者用公钥加密,接收者用私钥解密(只有拥有私钥的接收者才能解读加密的内容),因为私钥只掌握在接收者手里,不会在任何情况下传播,所以窃取方即使监听网络数据,也只能截取加密内容,无法解密。

–数字签名过程:甲方用私钥加密,乙方用公钥解密(乙方解密成功说明就是甲方加的密,甲方就不可以抵赖)

使用场景
对信息安全要求比较高的应用,如笔者现在参与的公对公API开发。

2.1.1.3 线性散列算法算法-不可逆

比较常见的不可逆加密算法是MD5、SHA1。

使用场景

  1. 用来做文件内容校验,比如常见的下载软件的md5校验
  2. 部分网站的登录密码在数据库保存时使用系统的密码进行加密 - 那些没有密码找回,只有密码重设的网站,通常就使用了不可逆算法加密,没办法给你找回密码。

2.2 PGP

PGP(英语:Pretty Good Privacy,中文翻译“优良保密协议”)是一套用于消息加密、验证的应用程序。

PGP软件提供的功能比较多,可进行数字签名,压缩,加密,生成公私秘钥对等。

本案例主要使用PGP软件生成公私密钥对。

在与其中的一个客户进行UAT时,在网关层对header进行解密的时候,网关层爆出authentication invalid。对比了几个

2.3 JWT

JWT全称是:JSON Web Tokens,关于Token是什么,可以在百度上自行查找,本文不做详细解释。
本案例使用JWT来进行数字签名。
数字签名一般不加密。

3 实现设计

3.1 约定及前期准备

为节省打字,把对方公司称为A,我方公司称为B。
双方的前期准备都是使用PGP软件生成RSA的公钥及私钥,并且将公钥发送给对方。

3.2 我方公司架构分层

因为公司有网关,在设计上,在网关上设计了对所有外部API访问消息的签名验证。而各个应用软件专注于对消息payload本身的加密约定进行解密及开发。

3.3 整体流程

在这里插入图片描述
其他说明:
通常JWT放在header,为编码但非加密数据
通常payload放在body,为加密且签名数据

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-10-22 11:17:36  更:2021-10-22 11:19:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:22:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码