当前位置:首页 > 经验 >

rsa加密原理总结(rsa加密解密用法)

来源:原点资讯(www.yd166.com)时间:2022-10-30 02:20:01作者:YD166手机阅读>>

因此:

rsa加密原理总结,rsa加密解密用法(17)

( 其中 d 是 e 相对于 φ(n) 的模反元素 , 因为 x = Φ(n) , 那么同样 , e 和 φ(n) 是互质关系 )

大家可以自己去实验一下 . 例如: m = 3 , n = 15 , φ(n) = 8 , e = 3 , d = 11 .

rsa加密原理总结,rsa加密解密用法(18)

到了这里 , 我们就得到了RSA算法的原理 . 那么我们对应起来介绍一下

RSA算法的原理

rsa加密原理总结,rsa加密解密用法(19)

  • 1、 n 会非常大,长度一般为 1024 个二进制位。(目前人类已经分解的最大整数, 232 个十进制位, 768 个二进制位)
  • 2、由于需要求出 φ(n) ,所以根据欧函数特点,最简单的方式 n 由两个质数相乘得到: 质数: p1 、 p2 . 那么 Φ(n) = (p1 -1) * (p2 - 1)
  • 3、最终由 φ(n) 得到 e 和 d 。 总共生成 6 个数字: p1、p2、n、φ(n)、e、d
  • 其中 n 和 e 组成公钥 .
  • n 和 d 组成私钥 .
  • m 为明文 .
  • c 为密文 .

( 除了公钥用到了 n 和 e 其余的 4 个数字是不公开的。 )

HASH 算法

HASH 介绍

Hash ,一般翻译做 “ 散列 ”,也有直接音译为“ 哈希 ”的,就是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数

HASH 特点

  • 算法是公开的
  • 对相同数据运算,得到的结果是一样的
  • 对不同数据运算,如 MD5 得到的结果默认是 128 位, 32 个字符( 16 进制标识)
  • 这玩意没法逆运算 ( 因此 HASH 并不用于加解密 )
  • 信息摘要,信息“指纹”,是用来做数据识别的

HASH 主要用途

  • 用户密码的加密
  • 搜索引擎 (根据 hash 值来匹配搜索内容 等)
  • 版权
  • 数字签名
  • 云盘文件审核 / 同文件识别
  • ...等等

HASH 安全性探讨

由于相同数据 hash 得到的结果是一样的 . 那么市面上大量万亿级 hash 结果记录数据库的存在 , 这个不可逆的算法 也另类的变成了可解密的存在.

因此 , 我们使用时经常有以下几种操作 :

  1. 加盐 (早期比较普遍的做法)
  2. 嵌套 hash
  3. 动态盐
  4. HMAC (也可以说成动态盐的一种吧)
  5. ... 等等

HMAC 加密方案

HMAC 使用一个密钥加密 , 并且做了两次散列 . 在实际开发中 , 密钥往往来自于服务器下发给客户端 并且可能是根据账户绑定的 . 并需要结合实际业务需求来设定注册与登录逻辑 (新设备授权等方式来决定服务器是否可以下发密钥给客户端)

看到这可能大家也跟我一样 都有个疑问 .

疑问

我不管你是如何 嵌套 加盐 HMAC 等什么方式去对密码做处理. 既然你登录是一个账号一个加密后的密码. 我抓包工具抓到就可以直接调用接口实现登录.

是啊 , 那不就 GG 了?

这就牵扯到接口安全的问题 , 其处理方法有很多种, 例如所有请求用 HTTPS , 并且使用对称性加密和非对称性加密结合等等方式对数据进行加密.

当然再安全的加密算法也有被破解的风险. 因此以下这种方式 , 大家可以理解参考一下 , 它能比较有效的解决抓包问题 :

解答

  1. 注册时
  • 同样使用 HMAC 的模式 , 也就是注册时 , 客户端把用户名传给服务器 .
  • 服务器随机生成一个密钥返回给客户端 , 并绑定这个密钥到用户表改用户里.
  • 客户端拿这个 key 将用户明文密码进行 HMAC 散列后发给服务器保存.
  1. 登录时
  • 登录时将用户 HMAC 之后的 hash 值 加上精确到分的时间戳 ( 时间统一为服务器下发时间 , 相信大家项目也都是使用了服务器时间. ) 然后进行散列.
  • 服务器收到请求 , 分别验证当前时间和前一分钟时间加上之前存储的 HMAC 后的密码进行 hash . 两次有一次成功即为登录成功.

思考:

为什么以上方式可以有效防护到接口被抓包的情况 ?

  1. 用户 HMAC 之后的 hash 值 只有在注册该账户时被传输过一次 .
  2. 抓到接口中 时间戳加 HMAC 之后的 hash 值进行散列 很难猜出嵌套方式.
  3. 使用抓到的接口中的源数据 ( 时间戳加 HMAC 之后的 hash 值 ) 每次都不一样 , 而且有效期只有最多 1 分 59 秒,最少一分钟 (有效期可灵活控制) 也就是说抓包人员抓到请求源数据后 , 必须在两分钟以内登录 , 否则就会失效.

HASH 题外话

可能有小伙伴碰到过上传云盘的文件被和谐的情况 , 并且改了名字或者后缀名重新传还是不行. 其实这就是 HASH 的一种运用场景 . 要 理解 HASH 是对二进制数据进行散列 . 那么改名字和后缀名其文件二进制是不会变化的 .

rsa加密原理总结,rsa加密解密用法(20)

栏目热文

rsa加密和解密过程(rsa加密解密的实际例子)

rsa加密和解密过程(rsa加密解密的实际例子)

1. RSA加密与解密 -- 使用公钥加密、私钥解密public class RSATool{public string...

2022-10-30 02:08:52查看全文 >>

非对称密钥加密解密过程(对称式加密解密过程图解)

非对称密钥加密解密过程(对称式加密解密过程图解)

2022年在合肥举办的国家网络安全宣传周网络全博览会上,国盾量子和科大讯飞还联合推出了一种让保障我们老百姓切身利益的黑科...

2022-10-30 02:25:04查看全文 >>

rsa加密原理图解(rsa加密解密的实际例子)

rsa加密原理图解(rsa加密解密的实际例子)

加密和解密使用的是两个不同的秘钥,这种算法叫做非对称加密。非对称加密又称为公钥加密,RSA只是公钥加密的一种。 数字签...

2022-10-30 02:24:59查看全文 >>

rsa加密模式(rsa加密过程图)

rsa加密模式(rsa加密过程图)

接口数据使用了 RSA 加密和签名?一篇文章带你搞定!1、前言 很多童鞋在工作中,会遇到一些接口使用RSA加密和签名来...

2022-10-30 02:22:00查看全文 >>

rsa非对称加密流程(RSA非对称加密)

rsa非对称加密流程(RSA非对称加密)

专注于IT行业优质技术服务号,欢迎关注作者:我叫Vincent密码学是在编码与破译的斗争实践中逐步发展起来的,并随着先进...

2022-10-30 02:04:22查看全文 >>

rsa加密使用方法(rsa非对称加密流程)

rsa加密使用方法(rsa非对称加密流程)

本文教你如何用Python与Java对文件进行不对称加密,并且Python与java共用一套密钥,可以相互加解密对方的...

2022-10-30 01:54:10查看全文 >>

rsa的加密和解密原理(rsa算法的加密和解密步骤)

rsa的加密和解密原理(rsa算法的加密和解密步骤)

数据信息安全对我们每个人都有很重要的意义,特别是一些敏感信息,可能一些类似于收货地址、手机号还没引起大家的注意。但是最直...

2022-10-30 02:19:20查看全文 >>

rsa加密和解密教程(rsa加密解密结果分析)

rsa加密和解密教程(rsa加密解密结果分析)

RSA加密验签是对安全性要求比较高的机构间通信常用的方式,密钥足够长的情况下,当前的计算能力还不足以解密(不过量子计算机...

2022-10-30 02:06:55查看全文 >>

rsa加密的流程(rsa加密算法主要步骤)

rsa加密的流程(rsa加密算法主要步骤)

目前常用的加密/解密算法主要有两类:对称加密算法和非对称加密算法。两者的主要区别在于加密和解密的密钥是否一致,一致的就是...

2022-10-30 02:09:13查看全文 >>

RSA加密算法(rsa加密算法实例代码)

RSA加密算法(rsa加密算法实例代码)

说到加密,目前比较常见的有对称加密和非对称加密,那什么是对称加密和非对称加密呢,如图对称加密假如 一个人A想把信息m发给...

2022-10-30 02:02:51查看全文 >>

文档排行