RSA算法学习笔记

RSA算法

RSA算法是一种非对称加密算法。在现代信息安全中具有重要地位,尤其在密钥管理和数字签名中应用广泛,其学习的重要性也就不必多说。但是学习这个有难度,需要耐心和毅力。

先补充一下对称加密和非对称加密

对称加密
 
- 定义:也叫单钥加密,加密和解密使用相同的密钥。
- 工作原理:发送方用密钥对明文进行加密得到密文,接收方使用相同的密钥对密文进行解密,还原出明文。
- 示例:常见的对称加密算法有AES(高级加密标准)。假设双方共享密钥是“123456”,发送方将明文“hello”通过AES算法和这个密钥加密成密文,接收方用同样的密钥“123456”解密就能得到“hello”。

非对称加密
 
- 定义:又称双钥加密,使用一对密钥,即公钥和私钥(不一样)。
- 工作原理:公钥可以公开,用于加密或验证;私钥由持有者保密,用于解密或签名。例如,发送方用接收方的公钥加密消息,接收方用自己的私钥解密。
- 示例:RSA是典型的非对称加密算法。如果A想给B发送消息,B把自己的公钥给A,A用这个公钥加密消息发给B,B再用自己的私钥解密。

 在RSA中,包含公钥和私钥。公钥用于加密数据或验证签名,私钥用于解密数据或生成签名

RSA的基础是数论中的欧拉定理和模运算。在RSA中,首先要生成密钥对,包括公钥和私钥。

密钥生成

1.选择两个不同的大质数p和q,计算乘积n=p*q(模数),n用于公钥和私钥的一部分,其大小决定了加密的强度

2.计算n的欧拉函数 \psi(n)=(p-1)*(q-1)

3.选择一个整数e,满足1<e<\psi(n)且e与\psi(n)互质。e是私钥的一部分,通常会选择较小的常数值,如65537,也可写作2的16次方+1或者100000000000000001(16个0)

4.计算私钥d,使得d*e\equiv1(\psi(n))(即d是e关于\psi(n)的模逆)

   公钥:(e,n); 私钥:(d,n)

注意:1.p和q选择长度在1024位及以上的大质数 ,可以利用sagemath生成 

           2.φ(n)表示在小于等于n的正整数中与n互质的数的个数

加密

- 明文m转化为数字(m<n)

- 使用公钥加密:

                              c = m^{e}  mod n

- c是密文

解密

- 使用私钥解密:

                               m = c^{d}  mod n

数字签名

-  使用私钥对消息摘要签名:

                               S = H(m)^d mod n

-  验证方用公钥验证签名是否正确

例如,假设p = 5,q = 7,那么n = 35,φ(n) = 24。选择e = 5,通过计算得到d = 5(因为5 * 5 ≡ 1 (mod 24))。如果要加密的消息m = 3,那么加密后的密文c = 3^5 mod 35 = 24。解密时,用私钥计算得到3 = 24^5 mod 35。
 
RSA的安全性主要基于分解大整数n的困难性。如果攻击者能分解n得到p和q,就能计算出私钥d,从而破解加密信息。

后续有什么内容会继续补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值