密码学可能是一个难以理解的主题。它充满了数学证明。除非你真的需要开发密码系统,否则,如果你只想从宏观的角度了解密码学,你并不需要理解这些复杂的内容。
如果你抱着能够创建下一个 HTTPS 协议的期望打开这篇文章,我不得不遗憾地表示只有信鸽是不够的。否则,煮一些咖啡,享受这篇文章吧。
Alice,Bob 和信鸽?
你在互联网上的任何活动(阅读这篇文章,在亚马逊上买东西,上传猫咪的图片)都归结为向服务器发送消息和从服务器接收消息。
这么讲听起来可能有点抽象,因此,我们不妨假设这些信息是通过信鸽传递的。我明白这么假设显得很随意,但请相信我:HTTPS 的工作原理就是这样的,只是快得多。
本文中我们并不会使用,服务器,客户端和黑客这样的术语,取而代之的是,我们会依次使用人名 Alice、 Bob 和 Mallory来代替它们。如果你不是第一次尝试理解密码概念,你可以认出这些名字,因为它们被广泛用于技术文献中。
一次简单的通讯
如果 Alice 想要给 Bob 传递一条信息,她将信息绑在信鸽的腿上,然后让信鸽传给 Bob。Bob 收到信息,读取信息。一切都正常。
但要是 Mallory 途中拦截了 Alice 的信鸽,并且改变了信息的内容?Bob 无法知道 Alice 发送的信息在传递途中被修改了。
这就是 HTTP 的工作原理。挺可怕的,对吧?我不会通过 HTTP 协议来发送我的银行凭证,你也不应该这么做。
一个密令
那如果 Alice 和 Bob 都很机灵呢。他们同意将使用密令来写信息。他们将字母表中的每个字母偏移 3 个位置。比如:D -> A, E -> B, F -> C。明文“secret message”将转换成“pbzobq jbppxdb”。
现在,如果 Mallory 拦截了信鸽,她既不能把信息改变成一些有意义的信息,也不能明白信息里说的内容,因为她不知道密令。但是Bob可以简单地反向应用密令(A -> D, B -> E, C -> F)将信息解密。密文“pbzobq jbppxdb”将被解密回“secret message”。
大功告成!
这被称为对称密钥密码术,因为当你知道如何加密一条信息,你也知道如何给信息解密。
我在上面介绍的密令通常被称为凯撒密码。在现实生活中,我们使用更高级和复杂的密令,但是主要思路是相同的。
openssl的对称加密
openssl
中集合了大部分的加解密算法,用openssl
来模拟对称加密的过程,假设Alice 写的一封信件放在 plain.txt
中
root@ubuntu:~/openssl_ca/enc# cat plain.txt
hello
使用openssl
的 des
对plain.txt
进行加密,
openssl enc -e -des -in plain.txt -out encrypt.txt -pass pass:12345678
使用密码 12345678
进行加密,输出到文件encrypt.txt
中。
查看 encrypt.txt
中的内容:
root@ubuntu:~/openssl_ca/enc# cat encrypt.txt
Salted__ DDѷb@麹
加密后的文件不是原来的内容了。
当收信人Bob 接到这封信的使用同样的使用密码 12345678
对加密的文件也就是他手里拿到的信,进行解密,
openssl enc -d -des -in encrypt.txt -out plain.encrypt.txt -pass pass:12345678
解密后的文件放在plain.encrypt.txt
中,查看plain.encrypt.txt
的内容:
root@ubuntu:~/openssl_ca/enc# cat plain.encrypt.txt
hello
因为Mallory 即使截获信鸽并不知道我们使用密码是12345678
,使用的加密算法是 -des
,因此解不开这封信,比如使用 密码122
对加密的文件进行解密,他无法得到原来的内容。
root@ubuntu:~/openssl_ca/enc# openssl enc -d -des -in encrypt.txt -out plain.encrypt.txt -pass pass:122
bad decrypt
140173114889880:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:529:
提示解密失败。
这是一次完整的对称加密过程。所谓的对称加密,可以这样来理解,写信人Alice 和收信人Bob ,知道大家使用的加密方式和加密的密码。
转载请标明来之:大家来编程go2code.com
来源:CSDN
作者:go2coding
链接:https://blog.csdn.net/weixin_40425640/article/details/104142231