前言:

为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长。


前期调试 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

由上述过程可知,只要私钥不泄露,密文正常渠道是无法破解的,秘钥长度越长,破解的难度越大。

参考:

  1. 什么是RSA非对称算法以及原理
  2. RSA加密
  3. 带你彻底理解RSA算法原理
  4. RSA算法原理(一)
  5. RSA算法原理(二)
  6. RSA算法

金融安全算法介绍系列6——RSA相关推荐

  1. 金融安全算法介绍系列5——国密算法

    前言: 为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长. 1. 简介 国密即国家密码局认定的国产密码算法.主要有 SM1,SM2,S ...

  2. 安全系列之——主流Hash散列算法介绍和使用

    其他文章: 安全系列之--手写JAVA加密.解密 安全系列之--数据传输的完整性.私密性.源认证.不可否认性 安全系列之--主流Hash散列算法介绍和使用 安全系列之--RSA的公钥私钥有多少人能分的 ...

  3. SSD系列算法原理讲解----(1)SSD系列算法介绍(主干网络、多尺度Feature Map预测)(笔记)

    SSD系列算法原理介绍 SSD算法介绍: Single Shot MultiBox Detector(One-stage方法) - Wei Liu在ECCV 2016提出 - 直接回归目标类别和位置 ...

  4. 深度强化学习主流算法介绍(二):DPG系列

    之前的文章可以看这里 深度强化学习主流算法介绍(一):DQN系列 相关论文在这里 开始介绍DPG之前,先回顾下DQN系列 DQN直接训练一个Q Network 去估计每个离散动作的Q值,使用时选择Q值 ...

  5. Spark推荐系列之Word2vec算法介绍、实现和应用说明

    Spark推荐实战系列目前已经更新: Spark推荐实战系列之Swing算法介绍.实现与在阿里飞猪的实战应用 Spark推荐实战系列之ALS算法实现分析 Spark中如何使用矩阵运算间接实现i2i F ...

  6. 安全系列之——主流 Hash 散列算法介绍和使用

    这里填写标题 1. 安全系列之--主流 Hash 散列算法介绍和使用 1.1. Hash 散列算法介绍 1.2. Hash 散列算法的特征 1.3. 散列算法的使用 1.3.1. 文件传输 1.3.2 ...

  7. Spark推荐实战系列之Swing算法介绍、实现与在阿里飞猪的实战应用(附代码)

    1.Swing算法介绍 Swing算法原理比较简单,是阿里早期使用到的一种召回算法,在阿里多个业务被验证过非常有效的一种召回方式,它认为 user-item-user 的结构比 itemCF 的单边结 ...

  8. 叙述无保密机制的rsa签名过程_安全系列之——RSA的公钥私钥有多少人能分的清楚?RSA的签名验签与加密解密如何使用公私钥?...

    在对接很多的互联网公司的开发平台时,这些互联网公司未来自身平台的安全,都会需要调用方签名确认调用方的身份是合法的,同时未来信息网络传输的安全可能还需要加密解密.比如对接支付宝.微信开放平台时,需要配置 ...

  9. 算法交易系列研究之一

    一.算法交易的概念   (一)什么是算法交易 算法交易(Algorithmic Trading)是一种程序化交易方式,它将交易者和市场有机地联系起来.算法交易通常可以减少这两者之间的摩擦,或者说在一定 ...

最新文章

  1. php-fpm 进程管理
  2. Visual C++ Windows 用来定位 DLL 的搜索路径
  3. flutter 图解_Flutter自绘组件:微信悬浮窗(三)
  4. python 格式化字符串_Python格式化字符串常用操作
  5. Presto入门介绍
  6. spring小实验 用spring的方式管理JDBC
  7. 对比视图和存储过程的使用和学习体会进行选择。
  8. python详细安装教程-python详细安装pip教程
  9. datax 不识别字段过滤_初效空气过滤器种类
  10. Mac 上使用vim 快捷键
  11. 软件开发过程中需要的文档汇总
  12. Xmind 2022精彩体验---什么叫流程图
  13. c语言中文网qq,c语言写的qq连看辅助
  14. 程序员转岗产品经理有哪些优势和劣势?
  15. 【关系代数习题】纸上得来终觉浅——数据库学习之路(4)
  16. ForestBlog博客源码学习笔记
  17. Servlet设置欢迎页面!
  18. SSM ==> 超市管理系统(mysql)
  19. 从零开始的linux 第十二章
  20. 伦敦银实时行情最新解读

热门文章

  1. java正则 环视_Java正则环视和反向引用功能与用法详解
  2. linux系统的midi制作软件,MIDI音乐制作软件(MidiEditor)
  3. SAP中供应商清单输出方法
  4. 机器学习 贝叶斯方法_机器学习中的常客与贝叶斯方法
  5. 手机号码正则表达式(含虚拟运营商)
  6. linux 用户和组详解
  7. 老旧小区为什么要进行安防升级改造
  8. mysql查询成绩并排名_一条SQL语句实现查询出成绩名次排名
  9. Unity 群聚(生成鱼群)
  10. (转)ANDROID强制锁定竖屏_APP固定设置竖屏或横屏