基于RSA加密的骚气表白

  • A+
所属分类:逆向工程

基于RSA加密的骚气表白

网安萌新,大佬勿喷


最近一哥们要向隔壁一个女生表白

问我能不能用黑客技术帮他表示一下

这我可就不困了!!!


基于RSA加密的骚气表白


正好我在预习RSA,能不能做个表白密码呢?说干就干!


Hello RSA


先熟悉一遍整个加密流程:


找出两个互不相等的大质数p和q;

求出模n=p*q;

由欧拉函数,可得ϕ(n)=(p1)(q1);

找出一个与ϕ(n)互质的整数e,要求1<e<ϕ(n);

计算出e关于ϕ(n)的模反元素d——说白了,不就是求个逆元吗;

计算公钥

计算私钥,解密

打个比方,锁门要用钥匙(公钥),开门也要用钥匙(私钥),Public key 可以公开,对我的安全没有影响,但是 Private key则不能,同时,我不能只会锁门而不会开门,除非这个门我不想再用了,所以在设计公钥的同时,也要考虑到私钥的可行性。从哲学的角度来讲,阴阳相生也。


几个问题

1.为什么要确保ϕ(n)互质的整数e?

在我看来,有两个方面:

由欧拉定理可知,当且仅当二者互质时,存在逆元,也就是私钥d;

若不互质,两个不同的明文,经过同样的秘钥加密,可以得到相同的密文,从而无法破解明文;

总的来说,就是impossible to decrypt,not vulnerable.


2.为啥要求1<e<ϕ(n)?


这就涉及到了群的问题,简单来说,某些问题只能在某种范围或者说某种情况下成立,例如椭圆曲线加密,就是建立在椭圆曲线上几何操作定义的有限素数群上的DLP问题,简称ECDLP(Elliptic Curve Discrete logarithm Problem),感兴趣的读者可以研究一下。


一个核心


RSA算法的核心就是One Way——即已知明文求模得出密文容易,反之则极为困难,尤其是在模n特别大的情况下,将模运算的单向性发挥的淋漓尽致。

密码学的本质就是解决计算复杂(不可行)的数学问题。

Security relies on the difficulty of factoring large composite numbers.


爱情密码


首先选择公钥e:1314(或521、520、147...一句话:越骚越好!)

然后选择p和q,要求

1.ϕ(pq)=(p−1)(q−1)

2.gcd(ϕ(n),e)=1

(这里我通过某种手段获取到了that gilr 的个人信息,包括但不限于姓名、学号、生日......)通过对其组合加密生成了模n:1455925529734358105461406532259911790807347616464991065301847


首先,将明文存为bytes形式(在Python语言中,数据是以bytes形式(也就是扩展ASCII码保存的))


基于RSA加密的骚气表白


呦,有点意思:

关注一下报错

原来在pow函数中,要求输入的数值均为int类型,所以bytes_to_long即可然,我怎么也装不上Crypto库,于是乎,手撕bytes:


基于RSA加密的骚气表白


加密,加密,加密!!!


基于RSA加密的骚气表白


大功告成,还有什么比爱情密码更美妙的东西吗?


脆弱性分析


考虑到接受方的专业程度,这里的n可以很容易被大因数分解攻击破解。


实践是检验真理的唯一标准


那哥们拿到爱情密码,激动万分、感激不尽、喜极而泣。

然后他就跑去表白了然,不是所有的女生都叫女黑客。


基于RSA加密的骚气表白


后话


看我明文写的啥:


基于RSA加密的骚气表白


基于RSA加密的骚气表白

原文始发于微信公众号(疯猫网络):基于RSA加密的骚气表白

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: