声明
本文属于OneTS安全团队成员flatcc的原创文章,转载请声明出处!本文章仅用于学习交流使用,因利用此文信息而造成的任何直接或间接的后果及损失,均由使用者本人负责,OneTS安全团队及文章作者不为此承担任何责任。
RSA 非对称加密
RSA 加密算法
RSA 加密算法是一种非对称加密算法。
在公开密钥加密和电子商业中 RSA 被广泛使用。
RSA 是 1977 年由罗纳德 · 李维斯特(Ron Rivest)、阿迪 · 萨莫尔(Adi Shamir)和伦纳德 · 阿德曼(Leonard Adleman)一起提出的。RSA 就是他们三人姓氏开头字母拼在一起组成的。
01、代码案例及基本原理
🔷公钥与私钥的产生

🔷消息加密

🔷Python代码案例
简单的RSA加解密如下:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# date: 24/11/2020 09:19
# desc: Basic RSA 讲一下RSA的原理
# 借用了BUUCTF-rsarsa 这道题的参数
import gmpy2
from Crypto.Util.number import bytes_to_long,long_to_bytes
p = 96484230290105156765905517400104265349
45737639235739800643989352039852507298
49139956103500916342705037010757073363
3350911691280297777160200625281665378483
q =
1187484383798029703209240584865365685
2760910154543380907650040190704283358
9092085782510630477324439922306479038
87510065547947313543299303261986053486569407
e = 65537
phi_n = (p-1) * (q-1)
N = p*q
d = gmpy2.invert(e, phi_n)
m = "这是一串明文".encode()
c = gmpy2.powmod(bytes_to_long(m), e, N)
print("加密后:", c)
c = 135273726366133196312113859763921550176
883614692374104871435068087711581450580
667103055814063783289940235016897393557
636142898782580516693510902406108413505
162443910691475977214907096200510022197
835077353222099144775303121183696280369
509878368033433668751465953520047310688
45866341103159758984584205701452126
m = gmpy2.powmod(c, d, N)
m = long_to_bytes(m)
print("解密后:", m.decode())02、例题
题目来自于n1book的BabyLib。
记得关注我们,了解更多技术知识!