首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >RSA算法的使用及逆向中的识别技巧

RSA算法的使用及逆向中的识别技巧

作者头像
OneTS安全团队
发布2025-02-07 16:22:07
发布2025-02-07 16:22:07
3360
举报
文章被收录于专栏:OneTS安全团队OneTS安全团队

声明

本文属于OneTS安全团队成员flatcc的原创文章,转载请声明出处!本文章仅用于学习交流使用,因利用此文信息而造成的任何直接或间接的后果及损失,均由使用者本人负责,OneTS安全团队及文章作者不为此承担任何责任。

RSA 非对称加密

RSA 加密算法

RSA 加密算法是一种非对称加密算法。

在公开密钥加密和电子商业中 RSA 被广泛使用。

RSA 是 1977 年由罗纳德 · 李维斯特(Ron Rivest)、阿迪 · 萨莫尔(Adi Shamir)和伦纳德 · 阿德曼(Leonard Adleman)一起提出的。RSA 就是他们三人姓氏开头字母拼在一起组成的。

01、代码案例及基本原理

🔷公钥与私钥的产生

🔷消息加密

🔷Python代码案例

简单的RSA加解密如下:

代码语言:javascript
复制
#!/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。

记得关注我们,了解更多技术知识!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OneTS安全团队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档