热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

RSAn分解攻击

题目给出public.key,flag.enc如果n较小,可以尝试分解n来进行攻击#coding:utf8需要安装2个模块:rsaÿ

题目给出public.key, flag.enc

如果n较小,可以尝试分解n来进行攻击

# coding:utf8"""
需要安装2个模块:rsa,pycrypto
如果有问题,应该把之前安装的crypto、pycrypto模块卸载掉重新安装一遍
还需要使用 yafu 分解n
"""
import rsa
from Crypto.PublicKey import RSAdef egcd(a, b):if a == 0:return (b, 0, 1)else:g, y, x = egcd(b % a, a)return (g, x - (b // a) * y, y)pub = RSA.importKey(open('pub.key').read())
n = long(pub.n)
e = long(pub.e)########################################################################################
# 通过yafu分解n,命令行打开yafu,输入factor(n)即可
# 如果可联网,还可以使用http://www.factordb.com/网站分解
# p = 28596...
# q = 30400...if not p an not q:print 'Need get p,q'exit(0)d = egcd((p - 1) * (q - 1), e)[2]
if d <0:d &#43;&#61; (p - 1) * (q - 1)key &#61; RSA.construct((n, e, d)) # 如果e较小&#xff0c;e应转化成long型: e &#61; long(e)
key.exportKey()
open("private.pem", "w").write(key.exportKey())p &#61; open("private.pem").read()
privkey &#61; rsa.PrivateKey.load_pkcs1(p)
crypto &#61; open("flag.enc").read()
message &#61; rsa.decrypt(crypto, privkey)
print message


推荐阅读
author-avatar
QingGang
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有