非对称性加解密大作战

RSA加密解密大作战

在医疗,教育,住房成为三座大山之前,RSA三位大佬,Rivest,Shamir和Adleman便是学过安全的人绕不过去的鼻祖了。什么非对称加密啦,什么公钥,什么私钥就在这个江湖响亮了几十年。

Alice和Bob也开始了他们长达几十年的传秘密字条的亮瞎狗眼的无耻行为。作为Eve的我们一直想尽办法破解他们秘密信息,制止他们这种令人发指的行为因为种种原因各种失败。今天就让我们来cosplay一把Alice和Bob感受一下。

工具以及指令

如果是使用Macbook的朋友,openssl这个command应该买机就送。如果使用windows朋友也应该很方便就能找到安装包。

大概步骤

其实就是使用公钥加密,然后使用私钥解密。公钥是顾名思义是公开的,也就是大家可以使用你公开的公钥加密一段信息,但是只有你可以使用隐藏起来的私钥解密,是不是很神奇。当然背后涉及的大质素分解以及计算复杂度理论可就没有那么简单说明了。

不管怎么说试了再说

请大家打开terminal,我用的iTerm2哦,强力安利。

  1. 当然你需要一条钥匙(私钥)
openssl genrsa -des3 -out my_private.pem

这里应该会叫你设一个密码,这个密码是使用这个私钥my_private.pem的时候要用的,务必牢记,所以只有你能用。

  1. 然后用你Alice同款的私钥去生成公钥了
openssl rsa -in my_private.pem -outform PEM -pubout -out my_public.pub.pem
  1. 然后Bob就可以作妖了。
# 生成明文
echo "my secret msg" > plain.txt
# 加密
openssl rsautl -encrypt -pubin -inkey my_public.pub.pem -in plain.txt -out encrypt.txt

不知道大家有没有留意,这里使用的是公钥去加密的,也就是所有人包括Bob都可以加密的。

  1. 然后Alice拿到这个加密的文件就可以去加密了,这里就算不安好心的Eve以及围观群众的我们都是没办法解密这个encrypt.txt的。
# 我不信我偏要试试
cat encrypt.txt
# 当然只有Alice本尊可以解密
openssl rsautl -decrypt -inkey my_private.pem -in encrypt.txt -out decrypt.txt
# 验证一下看看Bob想说什么
cat decrypt.txt

这样Bob竟然就可以光天化日之下堂而皇之的传了密码小纸条给Alice了😉。你说气不气。

当然怎么证明这个公钥就是Alice的,这里又涉及其他学问了,请听下回分解了。

Avatar
Marco Huang
Yet Another Engineer
comments powered by Disqus