--- title: Cryptography localeTitle: 加密 --- ## 加密 密码学的基本目标是使两个人能够通过不安全的渠道进行交流,使得第三个人无法理解所说的内容。该频道可以是电话线或计算机网络。 密码学开始被罗马人使用,以便在战斗中使消息不被敌人解读。 现代之前的密码学实际上是加密的同义词,信息从可读状态转换为明显无意义。 现代密码术用于数据中,因此只有一方或仅授权的方可以访问信息。 多年来的加密变得更加先进。 ### 例 Person1想要发送给Person2的信息,我们称之为“明文”,可以是文本,数字数据或任何类型的数据。 Person1使用预定密钥加密明文,并通过该信道发送得到的“密文”。 Person3在看到频道中的密文时,无法确定明文是什么,但是知道加密密钥的Person2可以解密密文并重建明文。 ### 凯撒Cypher(Shift Cypher) 第一个已知的密码是Ceasar密码。 Ceasar cypher通过在字母表中向上或向下移动特定量的“明文”字母来工作。 从外部人的角度来看,消息似乎是随机字母,其间有空格。 ### 现代密码学 现代加密使用几乎随机数和数学上合理的功能,以便进行安全通信。这些新开发的功能因其结构而不易被破解,甚至需要数百年的超级计算机才能破解。 现代加密有两种主要类型: ### 1)对称或单密钥加密: 对称密钥加密是一种加密方法,其中双方仅使用一个密钥进行加密和解密。由于它们的设计,这些算法通常比非对称或公钥加密快得多。 一些对称加密技术包括:数据加密标准(DES),高级加密标准(AES),Blow Fish,Two Fish,RC4。 ### 2)非对称或公钥加密: 非对称加密算法为每个用户提供一对密钥:一个公钥和一个公钥。使用该对中的一个密钥加密的任何消息只能用另一个密钥解密。 一些非对称技术包括:RSA,Diffie-Hellman,DSS(数字签名标准),ElGamal。 ### 密码哈希 大多数加密散列函数被设计为将任意长度的字符串作为输入并产生固定长度的散列值。 加密哈希函数必须能够承受所有已知类型的密码分析攻击。 ### 密码学哈希 加密散列函数是一种散列函数,它也被设计为单向函数(一种耗费太多时间和资源来暴力破解的函数)。散列的主要目的是处理消息的intregrity,因此相同的消息总是会产生相同的散列。 #### 更多信息: * [密码学:Douglas Stinson的理论与实践](https://www.crcpress.com/Cryptography-Theory-and-Practice-Third-Edition/Stinson/p/book/9781584885085) * [关于加密的TechTarget](http://searchsecurity.techtarget.com/definition/encryption) * [密码学指南](https://www.tutorialspoint.com/cryptography/index.htm)