参考文档:

各种加密方式运作原理以及sign签名参考视频

对称加密及RSA非对称加密的原理参考视频1

RSA非堆成加密的原理参考视频2

各种加密方式在线测试网站

参考demo

常见的加密有:对称加密,非对称加密,不可逆加密

sign签名则是使对外暴漏的接口能被安全的不爆露参数的访问


对称加密:

  • 常见的对称加密:AES,DES,Base64加密等
  • 对称加密指的是:加密者和解密者使用同一个密钥,双方需要私下见面约定一个密钥,如果在网络传输的话很有可能被劫持导致信息泄露,且由于原理简单,即使没有劫持到密钥,普通计算机24H以内也可破解,所以不建议使用
  • 对称加密的加密原理:通过对原文的ascii码,经过密钥和一定的数学运算得到密文
  • 对称加密的解密原理:通过对密文的ascli码,经过密钥和数学逆运算得到原文
  • 例如,ABC对应的ascli分别是:65、66、67   双方规定的密钥为3,规定的算法为+,得到的ascli码为:68、69、70,密文为DEF(当然在真正的应用场景比这个复杂的多,这个仅仅是个例子)

非对称加密:

  • 常见的非对称加密:RSA
  • 非对称加密指的是:由于对称加密,加密解密过程相对比较容易被破译,且需要双方通过非网络的形式约定密钥,既不方便有不安全。非对称加密采用的算法→模运算使加密过程相对比较容易,但是解密过程特别困难,甚至不可能。
  • 非对称加密原理:
  1. 模运算

第一个公式:m的e次方对N取余和c对N取余值是一样的,可以将原文m加密为密文c

第二个公式:c的d次方对N取余和m对N取余值是一样的,可以将密文c解密为原文m

模运算的特点是知道公钥和私钥,可以很快的得到密文或原文,但是如果不知道公钥或私钥,根据公式去推倒,是几乎不可能的

而且公钥和私钥不能解自身加密过的,但是可以相互解对方加密过的密文,即用公钥加密,即可用私钥解密;用私钥加密,即可用公钥解密。

2. 数学原理

那么应该怎么得到公钥和私钥呢?

(1).欧拉定理:任何一个正整数 n >1 都可以唯一地分解为一组质数p1,p2的乘积,例如:77 = 7*11,且7和11都为质数

(2).欧拉函数:数是小于n的正整数中与n互质的数的数目φ(n) = (p1-1)(p2-1),例如:小于77且与77互质的数目为φ(77) = (7-1)*(11-1) = 60

(3).N和e,d的选择:

N的选择一般是随机取一个较大的数,

1 < e  < φ(N),且e与φ(N)互质,满足这两个条件即可

d = ( k * φ(N) +1) / e,k值不定,但是必须保证d算出为整数

(4).例如我们对A进行RSA加密,A的ascli码为65

选取N= 3127 = 53*59(53和59都为质数),

φ(3127) = (53-1)*(59-1) = 52*58 = 3016

1 < e < 3016,且与3016互质,取e = 3

d = ( k * φ(N) +1) / e = ( k * 3016 +1) / 3,取 k= 2 ,d = 2011

所以,公钥为(3,3127),私钥为(2011,3127)

(5).我们用上述公钥和私钥对B和C加密

  • 日常应用中要比上述复杂的多 ,我们一般会在本地生成私钥和公钥,然后通过网络把公钥发送给远端。
  • 发送信息时,首先进行私钥的加密处理,送达远端后,远端拿着公钥去解密获取原文。
  • 接受信息时,远端会用公钥给文件加密,送达本地后,本地拿着私钥去解密获取原文。
  • 但是由于公钥和信息都是通过网络传输的,所以容易被人截获,造成信息泄露

  • 为了解决信息容易被截获的问题,所以就有了https协议,即http+ssl
  • 通过第三方机构的CA证书,即第三方的公钥和密钥,来进行双层的加密
  • 具体过程是,本地首先将公钥发送给第三方机构,第三方机构用私钥为本地的公钥加密,生成证书连同第三方机构的公钥 发送给本地
  • 本地将证书,第三方公钥,本地私钥加密后的密文发送给远端
  • 远端用第三方公钥解密证书得到本地公钥,用本地公钥来解密密文
  • 这种方式通过双层加密,但是仍然后一定的安全性问题


不可逆加密:

  • 常见的不可逆加密:MD5
  • 不可逆加密指的是:只管加密,不管解密,也就是说是无法解密的,只能通过比较密文来判断原文是否相等

sign接口签名:

  • 我们虽然有基于RSA算法的https协议,但是仍然有安全问题,例如:证书,第三方公钥被截获到,密文也就无效了

  • sign签名:有过期时间的加密的访问路径
  1. 对所有的参数按照ascll码进行升序排序
{"c":"1","a":"2","b":"3"}排序后{"a":"2","b":"3","c":"1"}
  1. 把参数名和参数值连接成字符串
a=2&b=3&c=1
  1. 把凭证用户名和密码放在参数的前面
user=zhangsan&pwd=123&a=2&b=3&c=1
  1. 用时间戳连接到参数的尾部
user=zhangsan&pwd=123&a=2&b=3&c=1&timestamp=20210607
  1. 把这个字符串进行32位MD5加密,再转换成大写
sign = 187B812906E8A76F30BB4FE47C459B5B
  1. 规定一定时间内有效即可

常见加密分类以及接口sign签名相关推荐

  1. python封装第三方接口_PYTHON 实现 SIGN 签名: 用于提供给外部(第三方) 做系统对接...

    简介 sign 签名是用于提供给外部(第三方)调用的接口,调用方需要提供正确的 appkey 钥匙才能调用,确保了接口的安全性. 前言 在 app 开放接口 api 的设计中,避免不了的就是安全性问题 ...

  2. python中sign函数图片_python接口自动化-实现sign签名(MD5加密)

    一,前序 今天在学习sign签名的的时候,了解了下常用的sign加密算法,突然心血来潮,想用python试着将签名生成的通用步骤用代码实现出来,虽然中间经历了一点小波折,请教了开发同事后,按照他给的思 ...

  3. Java—通过sign签名认证实现安全的开放接口API

    关注微信公众号:CodingTechWork,一起学习进步. 文章目录 引言 API接口 timestamp保证唯一性 shell生成timestamp java生成timestamp模板 sign签 ...

  4. 调用快递鸟API接口DataSign 签名加密技术文档

    2.1 关于签名 快递鸟和第三方电子商务公司系统进行对接,有一定的安全机制.采用 IP 认证加签名 的方式对接,具体方案如下: 1. 防止数据被篡改 在 POST 请求中会传递 5 个必须 (R) 参 ...

  5. 如何设计安全可靠的开放接口---之签名(sign)

    文章目录 [如何设计安全可靠的开放接口]系列 前言 一.前置知识 二.签名的作用 1. 数据防篡改 2. 身份防冒充 三.流程说明 前置准备 交互流程 接口请求方 接口提供方 完整代码补充 总结 [如 ...

  6. sign python_python实现sign签名

    sign签名是用于提供给外部(第三方)调用的接口,调用方需要提供正确的appkey钥匙才能调用,确保了接口的安全性. 签名参数sign生成方法: 假设有请求参数如下: appkey = "1 ...

  7. 【全栈接口测试进阶系列教程】精通api接口测试,接口分类,接口架构,http,webservice,dubbo接口协议,接口流程,接口工具,cookie,session,token接口鉴权原理以及实战

    目录 一,[什么是接口测试?为什么要作接口测试] 1.接口的作用 2.为什么要做接口测试 3.接口都有哪些类型? 二,[接口测试的分类] 接口的分类: http和webservice接口区别: 三,[ ...

  8. 生成sign(签名),以及校验工具类

    生成sign(签名),以及校验工具类 package cn.weixiuhui.support.comm.utils; import java.io.IOException; import java. ...

  9. 服务器生成微信sign,签名生成方法

    开发者服务端在与微投票服务器交互的过程中,需要对参数进行加签等操作,下边介绍具体规则. 一.服务端 1.请求微投票接口,需要根据参数生成一个签名(sign)并携带在参数中进行请求,最终的请求形式如下: ...

最新文章

  1. oracle根据一张表更新另外一张表
  2. 蓝桥杯_算法训练_Torry的困惑(基本型)
  3. 8、如何将SQL语句映射为文件操作
  4. 利用模板模式重构JDBC操作
  5. 高性能 HTML5 地铁样式的应用程序中的内容
  6. android对skia的封装,Skia引擎API整理介绍(skia in Android 2.3 trunk)
  7. Activity Monitor 闪退 无法进入睡眠
  8. 前端后端接口那些事吐槽
  9. OpenCV (iOS)中的形态学变换(11)
  10. excel日期格式改不了_这一类型的Excel快捷键,为什么如此好用
  11. cuSPARSE库:(六)cusparseMatrixType_t的说明
  12. sqlCommang ADO.Net
  13. mikadonic-RHCE——NFS服务配置图解
  14. 设计模式实现一个简单的缓存
  15. 阿里巴巴鹰眼系统简介
  16. bt和wifi的共存
  17. [汇编语言]立即数寻址和寄存器寻址
  18. 不用等微信官方!微信圣诞帽,我用Python就能搞定!
  19. 电子计算机技术人才需求,电子与信息技术专业人才需求调研报告.pdf
  20. H5 六边形消除游戏开发 1

热门文章

  1. [MFC] 几种子控件半透明效果的实现办法
  2. oracle去重保留一条_mysql、oracle 去重(数据库删除重复数据保留一条)
  3. 5G+AIoT时代,为什么IoT产品经理大有可为?
  4. 为什么python下载视频失败_python 爬虫 下视频 问题
  5. a星算法实现8数码问题c语言,A星算法求八数码问题实验报告.doc
  6. Java之——导出Excel通用工具类
  7. 【锁】细数多线程中的十三种锁
  8. x86和x64的意义
  9. 个人博客网站成功上线
  10. TFW6524完美替代进口PT6524芯片方案简介