对称加密和非对称加密

游戏中常用的加密算法

本书不是一本专门介绍密码学的书,所以下面讲解的加密算法内容将会忽略很多细节上的东西,想要深入研究和学习密码学的读者可以参考《Cryptography for Developers》,中文版名称叫《程序员密码学》。

1  对称加密和非对称加密

首先引入两个术语:明文和密文。明文是指未加密前的原始数据,密文是指加密后的数据。根据加密和解密时的密码不同,可以分为两种类型的加密解密算法。

(1)对称加密/解密。

加密和解密使用相同的密码,有代表性的有DES、Blowfish、TEA、Base64。对称加密解密的特点是运算相对非对称加密解密简单、速度块,主要应用于需要加密大量数据的场合,例如游戏的资源文件加密。

(2)非对称加密/解密。

加密和解密使用不同的密码,有代表性的有RSA、DSA、ElGamal和ECDSA。非对称加密/解密的安全性是基于复杂数学难题,特点是运算复杂、速度慢,主要应用于金融、军事等重大机密的系统。

为什么需要非对称加密和解密呢?假设你要发送一份非常机密的文件给你的朋友,而你的朋友的电脑跟外界通信的线路包括无线信号都被监听了,那怎么办?

方案A:提前给你的朋友协商一个密码,然后使用对称加密算法加密文件,转送给你的朋友,你的朋友根据之前协商的密码解密文件。

使用方案A传输加密后的机密文件,即使监听者获得了文件,仍然无法解密。初步肯定方案A有效。但当情况变成你要给多个陌生人传输机密文件,而之前根本无法和每个陌生人协商密码,那怎么办呢?这个时候非对称加密就有用武之地了。

如果使用非对称加密算法来加密/解密机密文件,那么陌生人先要确定一个加密的密码,然后将加密密码传输给你同时告诉你他使用哪种非对称加密算法,你用加密密码按照指定的非对称加密算法加密机密文件,将加密后的文件传输给陌生人,陌生人收到文件后使用另外一个密码解密文件。

这样即使监听者获得了加密密码和加密后的文件,也解不开机密文件,因为使用非对称加密算法加密的文件必须使用解密密码来解密,使用原来加密密码来解密是无效的。

加密密码和解密密码是相对的,如果用加密密码加密那么只有解密密码才能解密,如果用解密密码加密则只有加密密码能解密,所以它们被称为密码对,其中的一个可以在网络上发送、公布,叫做公钥,而另一个则只有密钥对的所有人才持有,叫做私钥,私钥不以任何形式传播。

原文地址:https://www.cnblogs.com/ulex/p/1887367.html