Cryptography
现代密码学主要使用代数方法。当然,最受欢迎的加密方法之一是RSA。它是asymmetr cipher(非对称加密):一个人拥有一个公钥和一个私有秘钥。可以将公钥分发给所有人 ,并允许对任何消息进行加密。但是,只有私钥才能解密这个使用公钥加密的消息。通常情况下,在仅仅知道公钥的情况下是不能解密消息的。but, 这正是研究它的乐趣所在!
prerequisite
假设我们获得了一个公共秘钥(pubkey.pem)和一条密文消息(message.txt),该消息已经使用此秘钥加密。我们的目标是解密这个被拦截的数据消息。尽管通常这是不可能的,但我们知道可以实现这个目标的一些条件。
The RSA cryptosystem
RSA加密系统基于数论。有关RSA背后涉及的数学的详细说明可以在Wikipedia上找到
因此,从给定的公钥pubkey.pem不能找到任何看起来有价值的数字,我们可以使用OpenSSL为我们提
取数字。
$ openssl rsa -pubin -in pubkey.pem -text -noout
RSA Public-Key: (2047 bit)
Modulus:
51:cf:f4:6d:9e:e3:20:96:d6:c8:06:cb:c7:df:2d:
1d:3b:ea:7e:7b:2f:c4:e8:26:d9:fc:5e:18:79:99:
12:dc:a1:50:b2:9c:65:c0:f9:e6:64:53:39:6c:e7:
de:63:1a:0f:9a:67:45:13:8b:61:25:bb:cd:18:5a:
a1:2e:b0:9a:4a:1b:d8:06:11:8c:97:a8:de:05:ed:
0b:e6:b4:5f:c1:c9:e9:93:71:92:f5:8b:c4:a5:cc:
27:67:80:3c:0b:21:34:2a:f5:cb:8f:34:af:fb:1a:
6e:c2:52:0c:76:5d:87:52:1c:68:48:db:d8:31:81:
2e:cc:6d:8b:b3