8、RSA 公钥密码算法

article/2025/9/25 2:37:27

目录

RSA公钥密码算法

一、RSA的数学基础

二、RSA原理

三、算法详细流程

四、RSA特点

五、RSA应用


参考推荐:

https://blog.csdn.net/lemon_tree12138/article/details/50696926

RSA加密算法原理_张维鹏的博客-CSDN博客_rsa加密算法原理

图解RSA算法+取余和取模运算_养只猫叫泡芙的博客-CSDN博客_rsa算法中mod怎么算

RSA公钥密码算法

RSA算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出,是最经典的非对称加密算法。非对称加密算法的特点就是加密秘钥和解密秘钥不同,秘钥分为公钥和私钥,用私钥加密的明文,只能用公钥解密;用公钥加密的明文,只能用私钥解密。它既能用于加密,也能用于数字签名,目前它已经成为最流行的公开密钥算法。SSH、OpenPGP、S/MIME、和SSL/TLS都依赖RSA的加密和签名功能。

一、RSA的数学基础

互质:如果两个正整数,除了 1 以外没有其他公因子,就称这两个数是互质关系。比如 3 和 5,13 和 31 等。

欧拉函数:求小于N 的正整数中与N 互质的数的数目。

例:对应 8,与 8 互质的数有 1,3,5,7,所以 φ(N) = 4。

RSA 算法使用了欧拉函数的一个特例:如果 N可以分解成两个互质的整数之积:

        N=pq ,则φ(N)=φ(p)φ(q)=(p−1)(q−1)。

例:φ(35947)=φ(103)φ(349)=(102)(348)=35496。

模反元素:如果两个正整数 a和 n互质,那么一定可以找到整数 b,使得 ab−1被 n 整除: ab≡1 (modn),这时,b就叫做 a的"模反元素"。

模反元素求解实例:

        5*d=1 mod 52:(52*X+1)/5

        5*d=1 mod 76:(76*X+1)/5   X从1 开始往上数->d

二、RSA原理

RSA 算法的可靠性基础:对极大整数做因数分解是很困难的,对极大整数做因数分解的难度决定了RSA算法的可靠性。其公钥和私钥是一对大素数(100到200位十进制数或更大)的相关函数,从一个公钥和密文恢复出明文的难度,等价于分解两个大素数之积。

RSA 是非对称算法,加解密使用不同的密钥。两个密钥都可以用于加密,解密时需要使用另一个密钥。但是,因为公钥是近乎完全公开的,通常用公钥加密私钥解密。理论上 A 和 B 之间要通过 RSA 实现保密通信,需要 A 和 B 各自生成一组密钥,同时保管好自己的私钥;发送者用对方的公钥加密要发送的消息,接收者用自己的私钥解密对方发送过来的消息。在签名的场景下,用私钥签名,公钥验签。

RSA 比 DES 等对称算法慢得多。一般在实际数据传输时,用 RSA 来加密比较短的对称密码,双方交换密码后再使用 DES 等对称算法加密数据。

注意

RSA 加密或签名后的结果是不可读的二进制,使用时经常会转为 BASE64 码再传输。

RSA 加密时,对要加密数据的大小有限制,最大不大于密钥长度。例如在使用 1024 bit 的密钥时,最大可以加密 1024/8=128 Bytes 的数据。数据大于 128 Bytes 时,需要对数据进行分组加密(如果数据超限,加解密时会失败,openssl函数会返回false),分组加密后的加密串拼接成一个字符串后发送给客户端。

为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。这就使加密的计算量很大。为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方式,即信息采用改进的DES或IDEA密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。对方收到信息后,用不同的密钥解密并可核对信息摘要。

为了保证每次加密的结果都不同,RSA 加密时会在待加密数据后拼接一个随机字符串,再进行加密。不同的填充方式 Padding 表示这个字符串的不同长度,在对超限数据进行分组后,会按照这个 Padding 指定的长度填入随机字符串。例如如果 Padding 填充方式使用默认的 OPENSSL_PKCS1_PADDING(需要占用11个字节用于填充),那么明文长度最多只能就是 128-11=117 Bytes

三、算法详细流程

1、参数定义与密钥生成

  • 生成两个大素数 p和 q,p不等于 q,p,q保密;
  • 计算 n=pq,n公开;
  • 根据欧拉函数计算小于n且与n互素的整数的个数,求得 r=φ(n)=φ(p)φ(q)=(p−1)(q−1),φ(n)保密;
  • 选择一个小于 r且大于1的随机数 e,使 e与 r互质,即gcd(e,r)=1,e公开;
  • 求得 e关于 r的模反元素 d,计算d:e*d≡1modr;d保密。
  • (n,e) 是公钥,(p,q,d, φ(n))是私钥---(n,d) 是私钥。

注意:

  • 模反元素存在,当且仅当 e 与 r 互质;
  • 将 p 和 q 的记录销毁;
  • 公钥发送给所有的通信对象(对服务器来说就是所有的客户端),私钥则必须保管好,防止泄露;通过私钥可以轻松计算出公钥,反之不行。

2、加、解密、签名

加密:

假设客户端要向服务器发送消息 m,服务器的公钥是 n和 e。客户端将消息 m 转换为一个小于 N的非负整数 n,比如可以将每一个字转换为这个字的 Unicode 码,然后将这些数字连在一起组成一个数字。假如信息非常长的话,可以将这个信息分为几段,然后将每一段转换为 n。用下面这个公式他可以将 加密为 c:

计算 c并不复杂,客户端算出 c 后就可以将它传递给服务器。

解密:

得到消息 c后,可以利用密钥 d 来解码。可以用以下这个公式来将 c 转换为 n:

得到 n 后,可以将原来的信息 m 重新复原。解码的原理是:

已知 ed≡1(modr),即 ed=1+hφ(N)。由欧拉定理得:

签名:

RSA 也可以用来为一个消息签名。签名应注意:不对数据M签名,而是对HASH(M)签名,可以使用时间戳,先签名后加密。实际应用中,对消息字符串的散列值(Message digest,用 MD5、SHA256 等算法求得的长度较短且固定的字符串)使用 RSA 的私钥进行签名(加密散列值)后,得到一个签名字符串,将其附加在消息字符串的合适位置后,一并发送。接收方使用对应的公钥可以从签名字符串中解密出原来的散列值,同时对原始消息再计算一次散列值。二者相比较,假如两者相符的话,则认为发信人持有正确的私钥,并且这个消息在传播路径上没有被篡改过。

四、RSA特点

密钥长度:用户应使用 1024 位密钥,证书认证机构应用 2048 位或以上;

非对称:用公钥加密时,私钥可以解密,反之亦然;核心运算是模幂运算,实现效率比较高效;

优势:经受住了多年深入的密码分析,虽然密码分析者既不能证明也不能否定RSA的安全性,但这恰恰说明该算法有一定的可信性;

缺陷:无法从理论上把握它的保密性能如何;产生密钥收到素数产生技术的限制;密钥分组产生高度较长,运算速度较低;

注意:其安全性要保证选取的素数p和q足够大,且为强素数,e,d不能太小,不能多个用户使用一个n

五、RSA应用

  • 苹果App签名
  • HTTPS 加密连接
  • 利用OpenSSL库对Socket传输进行安全加密
  • SSH、OpenPGP、S/MIME、和SSL/TLS都依赖RSA的加密和签名功能

注:

如有错误、侵权,请联系笔者更改删除!!!


http://chatgpt.dhexx.cn/article/EicncPJk.shtml

相关文章

常用的密码算法有哪些?

我们将密码算法分为两大类。 对称密码(密钥密码)——算法只有一个密钥。如果多个参与者都知道该密钥,该密钥 也称为共享密钥。非对称密码(公钥密码)——参与者对密钥的可见性是非对称的。例如,一些参与者仅…

分组密码算法与DES算法

目录 1 分组密码的含义 1.1 分组密码介绍 1.2 分组密码的含义 1.3 分组密码的要求 2 分组密码的设计思想 2.1 分组密码的设计思想 3 分组密码的基本特点 3.1 分组密码的基本特点 3.2 分组密码的迭代结构 3.3 子密钥的生成方法 3.4 轮函数的设计准则 3.5 迭代的轮数 4…

11、国产密码算法

参考推荐: 国密SM1\ SM2\ SM3\ SM4\ SSF33算法和国际RSA算法的对应关系_小明做IT的博客-CSDN博客_ssf33算法 国密算法SM1/SM2/SM3/SM4_fengwang0301的博客-CSDN博客_sm2/sm3/sm4 国产密码算法 国产密码算法是指由国家密码研究相关机构自主研发,具有相…

密码算法应用规范

术语解释 对称算法(Symmetric key algorithm):采用相同的密钥执行加密或解密。 非对称算法(Asymmertric key algorithm,公开密钥算法):用作加密的密钥不同于用作解密的密钥,而且解密…

古典密码算法(移位密码算法、维吉尼亚算法)

古典密码算法(凯撒、维吉尼亚) A. 1-1.移位密码算法 【实验目的】 1) 学习移位密码的原理 2) 学习移密码的实现 【实验原理】 算法原理 a) 移位密码就是对26个字母进行移位操作,可以移动任意位数,这样就实现了对明文的加密…

换位密码算法

换位密码算法基本原理:先把明文按固定长度进行分组,然后对每一组的字符进行换位操作,从而实现加密。为加强安全性,可进行多次换位密码算法运算。 import random def encrypt(plainText,t):result[]lengthlen(t)temp[plainText[i:…

常见密码学算法

学习笔记 分类 密码学用于解决信息安全中的保密性,完整性,认证和不可否认性等问题。最初主要用于解决保密性。随着密码学技术的发展,逐渐应用到其它领域。 常见密码学算法:DES,AES; RSA, ECC; Hash; Signature等。 分类 对称密…

密码学基础(一)常见密码算法分类

一、密码算法分类: 密码算法主要分为三类:对称密码算法、 非对称密码算法、摘要算法。 二、对称密码算法(Symmetric-key Algorithm) 1、概念 对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。有时又叫传统密码算…

常用的密码算法汇总分析(动态更新ing)

常用密码算法整理汇总 常用对称加密算法常用非对称加密算法常用Hash算法国产密码关于密码算法会持续更新.... 常用对称加密算法 对称加密算法(分组加密)描述DES将明文分为64位一组、密钥64位,实际56位(64位中8位奇偶校验位)3DES执行了3次DES&…

【密码学】常见密码算法分类和运用

一、摘要算法(Digest Algorithm) 摘要算法 是指把任意长度的输入消息数据转化为固定长度的输出数据的一种密码算法,又称为 散列函数 、 哈希函数 、 杂凑函数 、单向函数 等,通常用来做数据完整性的判定,即对数据进行…

常用密码算法介绍

算法种类 根据技术特征,现代密码学可分为三类: 对称算法 说明:加密密钥和解密密钥相同,对明文、密文长度没有限制 子算法: 流密码算法:每次加密或解密一位或一字节的明文或密文 分组密码算法&#xff…

2020 shodan 配置详解

需要先注册一个号>然后才能在kali里安装并认证 官网:https://www.shodan.io 安装命令: git clone https://github.com/achillean/shodan-python.git cd shodan-python python setup.py installshodan -h 查看使用: 这个。。土味英语&am…

Python中shodan模块的使用

关于shodan的安装和使用,传送门——> 渗透测试之Shodan的安装和使用 常用 Shodan 库函数 shodan.Shodan(key) :初始化连接APIShodan.count(query, facetsNone):返回查询结果数量Shodan.host(ip, historyFalse):返回一个IP的详细…

暗黑引擎 -- Shodan常用搜索语法

fofa,钟馗之眼,shodan等等一系列的公网设备搜索引擎,其中fofa和shodan使用的最多,本文就来整理一些shodan的搜索语法 Shodan:www.shodan.io Ps:均来自互联网搜集整理 工业控制系统 三星电子广告牌 &quo…

shodan的使用及maltego的注册

渗透学习 信息收集工具指南1 文章目录 渗透学习前言*本文只做学习用途,严禁利用本文提到的技术进行非法攻击,否则后果自负,本人不承担任何责任。* 一、shodan1.网络空间搜索引擎2.shodan3.命令行shodan 二、maltego1.情报分析2.maltego 总结…

shodan命令行

shodan获取IP信息 kali中命令行输入 shodan host ip 可以看到好多,比如可能漏洞,开放端口,运行的服务 shodan info 查询账户信息 Shodan获取自身外部IP shodan myip shodan检测是否有蜜罐保护 shodan honeyscore ip 蜜罐好比是情报收…

使用shodan/censys API搜索免费的elasticsearch/kibana资源

文章目录 注册shodan并获取API安装shodan注册censys并获取API安装censys用censys查询可用elasticsearch资源 记得以前我在elastic社区分享过一个主题《ITDS如何玩转elastic》(这里的ITDS是IT屌丝的意思),里面提到过如何用elasticsearch做数字货币的交易数据分析&…

探究Shodan之旅之Shodan Hacking

下面让我们继续浅析一下国外专注于物联设备扫描的Shodan引擎~~ ExploreSearch Engine for the Internet of Thingshttps://www.shodan.io/explore Shodan除了能搜索Web服务器,还能扫描防火墙、路由器、交换机等一切 联网设备且支持Chrome和Firefox拓展插件 Shodan…

信息搜集:网络空间搜索引擎(Shodan)语法及API应用案例

信息搜集:网络空间搜索引擎(Shodan)语法及API应用案例 使用Python去调用Shodan的API接口可以实现自动化信息搜集,首先需要注册用户,在My Account中可以看到API Key。本例如下图: 初始化API: import shodan…

shodan常用命令

简介 虽然目前人们都认为谷歌是最强劲的搜索引擎,但Shodan才是互联网上最可怕的搜索引擎。与谷歌不同的是,Shodan不是在网上搜索网址,而是直接进入互联网的背后通道。Shodan可以说是一款“黑暗”谷歌,一刻不停的在寻找着所有和互联…