金融安全算法介绍系列6——RSA
前言:
为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长。
前期调试 RSA 算法相关的操作,一直想写个扫盲文章,记录一下相关的概念和操作流程。本文大多参考网上的内容,仅以了解的思路整理成文,对 RSA 算法有一个初步的认识。
1. 概述
RSA 加密算法是一种非对称加密算法,RSA 非对称加密存在大量的取模运算,加密速度慢,在实际应用中结合对称加密算法一起使用,RSA 对对称加密的私钥进行加密。RSA 算法的可靠性由对极大整数做因数分解的难度决定。
2. 算法参数
参数 | 解释 | 备注 |
---|---|---|
M | 明文 | |
C | 密文 | |
N | 模数,两个很大的质数的乘积 | |
E | 公钥指数 | |
D | 私钥指数 | D 是 E 对于 φ(n) 的模反元素 |
p,q | 两个比较大的质数 | |
(E,N) | 公钥 | |
(D,N) | 私钥 | |
(E,D,N) | 密钥对 | |
p q dp dq qinv | CRT模式的私钥 | p、q 为两个大素数。RSA1024 算法,二者长度均为 1024/2 = 512bit = 64byte,dp、dq 两个参数长度也和P、Q长度相等。n =p * q长度为 1024 bit(128byte),d 为私钥参数;e 为公钥指数(一般使用 65537 - 0x010001) |
3. 加密
RSA 加密是对明文的 E 次方后除以 N 后求余数的过程,有了 E和 N 就可以完成 RSA 加密,E、N 是 RSA 加密的密钥,即 E 和 N 的组合为公钥。
4. 解密
对密文进行 D 次方后除以 N 的余数就是明文,即 RSA 解密过程。D和 N 就能进行解密,D 和 N 的组合为私钥。
5. 欧拉函数与模反元素
5.1 欧拉函数
任意给定正整数 n,计算在小于等于 n 的正整数之中,有多少个与 n 构成互质关系?计算这个值的方法就叫做欧拉函数,以 φ(n) 表示。
若一个数 n 可以分解为两个质数 p 和 q 的乘积,则有:
eg:在1~8 中,与 8 构成互质数的有:1、3、5、7,即 φ(8) = 4。
5.2 模反元素
6. 计算过程
6.1 N 值
假设 p =61,q = 53; n = 3233。
两个比较大质数 p,q 的乘积为 N。
6.2 φ(n) 值
根据 φ(n) = (p-1) * (q-1) 代入计算n的欧拉函数值。
φ(3233) = (61-1) × (53-1) = 60 × 52 = 3120
6.3 e 值
在 1 < e < φ(n) 之间,随机选择一个整数 e,且 e 与 φ(n) 互质,选择 e = 17。
6.4 e 对于 φ(n) 的模反元素 d
因为 e 与 φ(n) 互质,根据求模反元素的公式计算 e,对于 e 的模反元素 d 有:
ed ≡ 1 (mod φ(n)) 等价于 (ed - 1) / φ(n) = k(k为任意正整数)
ed - kφ(n) = 1
代入数据得:
17d - 3120k = 1 对这个不定方程求解(扩展欧几里得算法)得:
其中一组解为:(d, k)=(2753, 15)
至此,我们就得到了 RSA 的三个参量,即 n = 3233,e = 17,d = 2753。所以公钥为(3233,17);私钥为(3233,2753)。而我们所说的 RSA1024,2048 就是指密钥对的长度(n的长度)。本例,长度就是 3233 = 1100 1010 0001,即为 12 位。
6.5 加解密过程
(1)明文 m = 65;
(2)公钥 (n, e) = (3233, 17)
(3)加密 c = (m^e mod n) = ( (65 ^17) mod 3233) = 2790
(4)私钥 (n, d) = (3233, 2753)
(5)解密 m = (c^d mod n) = ((2790 ^2753) mod 3233) = 65
由上述过程可知,只要私钥不泄露,密文正常渠道是无法破解的,秘钥长度越长,破解的难度越大。
参考:
- 什么是RSA非对称算法以及原理
- RSA加密
- 带你彻底理解RSA算法原理
- RSA算法原理(一)
- RSA算法原理(二)
- RSA算法
金融安全算法介绍系列6——RSA相关推荐
- 金融安全算法介绍系列5——国密算法
前言: 为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长. 1. 简介 国密即国家密码局认定的国产密码算法.主要有 SM1,SM2,S ...
- 安全系列之——主流Hash散列算法介绍和使用
其他文章: 安全系列之--手写JAVA加密.解密 安全系列之--数据传输的完整性.私密性.源认证.不可否认性 安全系列之--主流Hash散列算法介绍和使用 安全系列之--RSA的公钥私钥有多少人能分的 ...
- SSD系列算法原理讲解----(1)SSD系列算法介绍(主干网络、多尺度Feature Map预测)(笔记)
SSD系列算法原理介绍 SSD算法介绍: Single Shot MultiBox Detector(One-stage方法) - Wei Liu在ECCV 2016提出 - 直接回归目标类别和位置 ...
- 深度强化学习主流算法介绍(二):DPG系列
之前的文章可以看这里 深度强化学习主流算法介绍(一):DQN系列 相关论文在这里 开始介绍DPG之前,先回顾下DQN系列 DQN直接训练一个Q Network 去估计每个离散动作的Q值,使用时选择Q值 ...
- Spark推荐系列之Word2vec算法介绍、实现和应用说明
Spark推荐实战系列目前已经更新: Spark推荐实战系列之Swing算法介绍.实现与在阿里飞猪的实战应用 Spark推荐实战系列之ALS算法实现分析 Spark中如何使用矩阵运算间接实现i2i F ...
- 安全系列之——主流 Hash 散列算法介绍和使用
这里填写标题 1. 安全系列之--主流 Hash 散列算法介绍和使用 1.1. Hash 散列算法介绍 1.2. Hash 散列算法的特征 1.3. 散列算法的使用 1.3.1. 文件传输 1.3.2 ...
- Spark推荐实战系列之Swing算法介绍、实现与在阿里飞猪的实战应用(附代码)
1.Swing算法介绍 Swing算法原理比较简单,是阿里早期使用到的一种召回算法,在阿里多个业务被验证过非常有效的一种召回方式,它认为 user-item-user 的结构比 itemCF 的单边结 ...
- 叙述无保密机制的rsa签名过程_安全系列之——RSA的公钥私钥有多少人能分的清楚?RSA的签名验签与加密解密如何使用公私钥?...
在对接很多的互联网公司的开发平台时,这些互联网公司未来自身平台的安全,都会需要调用方签名确认调用方的身份是合法的,同时未来信息网络传输的安全可能还需要加密解密.比如对接支付宝.微信开放平台时,需要配置 ...
- 算法交易系列研究之一
一.算法交易的概念 (一)什么是算法交易 算法交易(Algorithmic Trading)是一种程序化交易方式,它将交易者和市场有机地联系起来.算法交易通常可以减少这两者之间的摩擦,或者说在一定 ...
最新文章
- php-fpm 进程管理
- Visual C++ Windows 用来定位 DLL 的搜索路径
- flutter 图解_Flutter自绘组件:微信悬浮窗(三)
- python 格式化字符串_Python格式化字符串常用操作
- Presto入门介绍
- spring小实验 用spring的方式管理JDBC
- 对比视图和存储过程的使用和学习体会进行选择。
- python详细安装教程-python详细安装pip教程
- datax 不识别字段过滤_初效空气过滤器种类
- Mac 上使用vim 快捷键
- 软件开发过程中需要的文档汇总
- Xmind 2022精彩体验---什么叫流程图
- c语言中文网qq,c语言写的qq连看辅助
- 程序员转岗产品经理有哪些优势和劣势?
- 【关系代数习题】纸上得来终觉浅——数据库学习之路(4)
- ForestBlog博客源码学习笔记
- Servlet设置欢迎页面!
- SSM ==> 超市管理系统(mysql)
- 从零开始的linux 第十二章
- 伦敦银实时行情最新解读