Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all articles
Browse latest Browse all 12749

CTF-RSA破解方式整理

0
0

其实对于RSA加密算法攻击的文章,互联网上已经有很多了,所以本文主要还是以整理为主,只列出每种攻击方式的攻击条件、需要的一些工具、具体操作步骤等。

算法基本概念 算法介绍

RSA加密算法属于公钥加密算法,是一种非对称密码算法,所谓非对称,就是一个密码用来加密,另一个密码用来解密,一般来说,用公钥加密,私钥解密,当然也有其他情况。

算法原理

RSA算法基于一个事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。RSA算法三个参数:n、e1、e2

n=pq (p、q为2个大质数) n的二进制所占用的位数即秘钥的长度。

e1与e2是一对相关的值,e1可以任意取,但要求e1与(p-1)(q-1)互质;要求(e2e1)mod((p-1)(q-1))=1。

(n,e1),(n,e2)就是密钥对,其中(n,e1)为公钥,(n,e2)为私钥。

算法公式 假设: A:明文 B:密文 ――用公钥加密公式―― A=B^e2 mod n B=A^e1 mod n ――用私钥加密公式―― A=B^e1 mod n B=A^e2 mod n openssl解析公私钥 解析公钥 openssl rsa -in publickey.pem -pubin -modulus -text 解析私钥 openssl rsa -in privatekey.pem -modulus -text 利用私钥文件,解密文件 openssl rsautl -decrypt -in encrypted.message -inkey priv.key -out mess python解密算法 n = 0xD12B639DF759A99C9ADB57500BBD635041AA70F8E73F6EA158B23B9AF575915CF68CF8E57B045BBEBCF78A9BCA72BF0E63CB6EC353D66142048CB69EB5F20CDC6BAF6C85E77E6F2AA906DC5868FCB0F0330DEB55076EDF1B226EF54926DD2AD3C943C8EB35CB8C85848E05EA8680988A182701B6A0DC54967760CAC28136AD5B3D9F1CF7952B898CFAAF863A90BFD58DF0FA3F358A7EB8BCBE1BFCF13872BBB9FCC2B330A38F3FD689467FEF22F027549F53D460E9FEBB48F1AE15F7BFBA93069641FD53C46FC971560F5955D8F6E419F5981A9BA393718D785F58659607F511F6CC4077834E059F368EB05BCA7964EA2DC8CD1B13F62A29EA244A3876FF5967 p = 167343506005974003380506069679607737381940204686173214188860057004909006055220516074283090160430833007424970980655748310232878462615469792561310560310363430669700009093597847018287568821792168143170329382585883857083334915378884054389878477389765792275111293420203613159303898365894897865177093362621517279751 e = 0x10001 c = 0xab3a204bb5fc33764ea6452124971bba469176e2f2a8700f6e599a6da6129bd89ab6eba5ac7704a419a297b578d0dee06ec417c18c791011f9af95761d170420e5e381f939be918b8cf57104bc978760da8c73d7e8abdb16943c8cda4241b50dabc1ecb74d320d23bfeab8bd764e9b93bfaecae3746f62b56cd1b94adeac090e2a604037c496ec1c5bccaadbd4761322a8eeed3425154ca65d37b885bd226a2b6207a2c21fec5a8edb8ce41d9a478b7d6c614ee972060468691568ab3ca63aba9db9df7ebe1445fa1ec591de42dab950092bf79cc3e9682f19cc5a4c329a7c59ed6e85fd191f555199c778f8a2a3b9c9de6b1fb9ee6b9086c84a3986080963fb q = n/p def 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) def modinv(a, m): g, x, y = egcd(a, m) if g != 1: raise Exception('modular inverse does not exist') else: return x % m d=modinv(e,(p-1)*(q-1)) m=pow(c,d,n) ctfRSAtools

全自动化的工具,了解一下

https://github.com/Winter3un/CTF-RSA-tool


Viewing all articles
Browse latest Browse all 12749