有一天,你终于按捺不住内心的冲动,想向心仪已久的女神小琳表达自己的爱意,可又怕遭到小琳的拒绝且被他人知晓,此时,你心中有两个问题要解决:
(1)让小琳知道你喜欢她的这个信息。
(2)绝不能让第三者知道你向小琳表达的爱意。
作为谨慎而又充满才智的你,很快就意识到“对称加密”的方式已经不适合,因为网络世界不同于现实世界,计算机强大的算力可能在很短时间内猜到你的密文含义,因此,是时候采用更加安全的“非对称加密”方式了!
非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)——百度百科。
不管公钥还是私钥,尽管听上去很神秘,但是你只要把它理解为钥匙就行,公钥是对外公开的,而私钥是自己私有,绝对不能对外公开的,它们本质上都是字符串。如图,它们就长这样:
终于,你想好了发送的表白信内容是“love”,
你和小琳分别需要这么做:
你获取到了小琳的在网络上公开的公钥字符串“publickey”,并且就用这把公钥来加密你想表达的“love”,此时你可能会惊讶:用公开的字符串来加密,岂不是很容易就被拦截破解?
其实是不会的,因为非对称加密不同于对称加密,非对称加密是不可逆推的,使用公钥加密,却不能使用原公钥解密,只能用对应的私钥解密,而私钥只有公开公钥的小琳有。另外,公钥是由私钥算出来的,一个私钥可以计算出多个公钥,但无法通过多个公钥推导出私钥,而这,正是非对称加密的核心。
剩下的过程就简单了,你使用加密函数y = F(a,b),只要分别把a,b替换为你的表白信“love”和小琳的公钥“publickey”,即:
F(love,publickey) = y
函数F就会将加密计算后的结果y代替love在网络中游走,直到传输到小琳那里,即使你的同学截取了你密文y,也无法逆推原文,除非他拥有了小琳的私钥。
小琳接收到你的密文y,她要用解密函数 G 和私钥“privatekey“来获取原文,即:
G(y,privatekey) = love
终于,小琳明白了你的心意,原来如此大费周章,就是想表达你“love”她,一段美好的恋情可能从此就拉开了序幕。
- 非对称加密需要公钥和私钥,公钥对外公开,用于别人加密,私钥自己留着,千万别泄露,这是解密的的重要凭证。
- 公钥和私钥都是字符串,当然,是比较复杂的字符串。
- 公钥是有私钥计算来的,由公钥无法推导私钥,是单向的过程,因此,非对称加密核心是不可逆推。