萌新学习RSA第一天

文章来自NSSCTF工坊Xenny的课程

1.非对称加密
2.介绍RSA来源(三位数学家名字开头)
3.RSA数学基础
4.算法实现
from Crypto.Util.number import * #这个是关于RSA很多函数的库
p = getPrime(512)                #111RSA第一步:生成随机的512位(二进制位 )p q
q = getPrime(512)
n = p*q                          #生成n
phi = (p-1)*(q-1)                #欧拉函数
e = 65537                        #公钥
assert GCD(e, phi) == 1, "该e不满足互素条件"   #查看e 与 欧拉函数是否互质
d = inverse(e, phi)                         #求逆元d

print(f'公钥:({e}, {n})')                  #查看公钥
print(f'私钥:({d}, {n})')                  #查看私钥

message = b'hello_RSA'                     #让明文转换为字符串
m = bytes_to_long(message)                 #将字符串转换为整数
print('消息:', m)

c = pow(m, e, n)                           #加密              m的e次幂在模n下
print('密文整数:', c)

msg = pow(c, d, n)                         #解密               c的d次幂在模n下
print('明文整数:', msg)

mw = long_to_bytes(msg)
print('明文整数:', mw)
assert msg == m, "解密失败"

5.RSA工作原理:
1.生成公钥,私钥
  1. 选取两个不同的 素数  p 和  q ,计算 �=�⋅� N= pq 。
  2. 欧拉函数 值  �(�)=�(�)�(�)=(�−1)(�−1) φ(N)=φ(p)φ(q)=(p−1)(q−1)
  3. 选择一个小于  �(�) φ ( N )  的整数  e  ,并且满足  e 和  �(�) φ(N互质,求得  e  在模  �(�) φ ( N )  意义下的 乘法逆元  d ,有  ��≡1(mod�(�)) e d 1 ( mod φ ( N ))
  4. 销毁 � p 和 � q 。
此时有 (�,�)(N,e) 为公钥, (�,�)(N,d) 为私钥。
2.加密
3.解密
附加说明
m 明文
c 密文
  • 17
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值