首页 > 代码库 > 对称加密和非对称加密

对称加密和非对称加密

 

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

 

一、对称加密/解密。

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

 

对称加密,是一种比较传统的加密方式,其加密运算、解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时,必须共同持有该密码(称为对称密码)。因此,通信双方都必须获得这把钥匙,并保持钥匙的秘密。
单钥密码系统的安全性依赖于以下两个因素:
第一、加密算法必须是足够强的,仅仅基于密文本身去解密信息在实践上是不可能的。
第二、加密方法的安全性依赖于密钥的秘密性,而不是算法的秘密性,因此,我们没有必要确保算法的秘密性(事实上,现实中使用的很多单钥密码系统的算法都是公开的),但是我们一定要保证密钥的秘密性。
DES(Data Encryption Standard)和TripleDES是对称加密的两种实现。
DES和TripleDES基本算法一致,只是TripleDES算法提供的key位数更多,加密可靠性更高。
DES使用的密钥key为8字节,初始向量IV也是8字节。
TripleDES使用24字节的key,初始向量IV也是8字节。
两种算法都是以8字节为一个块进行加密,一个数据块一个数据块的加密,一个8字节的明文加密后的密文也是8字节。如果明文长度不为8字节的整数倍,添加值为0的字节凑满8字节整数倍。所以加密后的密文长度一定为8字节的整数倍。
 

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

 

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

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

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

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

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

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

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

 

非对称加密算法(asymmetric cryptographic algorithm)又名“公开密钥加密算法”,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。

 

非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。

另一方面,甲方可以使用自己的私密钥对机密信息进行加密后再发送给乙方;乙方再用甲方的公钥对加密后的信息进行解密。

  甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。 非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要。

  非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。

 

工作原理

 

1.A要向B发送信息,A和B都要产生一对用于加密和解密的公钥和私钥。  

  2.A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。

  3.A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。

  4.A将这个消息发给B(已经用B的公钥加密消息)。

  5.B收到这个消息后,B用自己的私钥解密A的消息。其他所有收到这个报文的人都无法解密,因为只有B才有B的私钥。

 

主要应用

非对称加密(公钥加密):指加密和解密使用不同密钥的加密算法,也称为公私钥加密。假设两个用户要加密交换数据,双方交换公钥,使用时一方用对方的公钥加密,另一方即可用自己的私钥解密。如果企业中有n个用户,企业需要生成n对密钥,并分发n个公钥。由于公钥是可以公开的,用户只要保管好自己的私钥即可,因此加密密钥的分发将变得 十分简单。同时,由于每个用户的私钥是唯一的,其他用户除了可以可以通过信息发送者的公钥来验证信息的来源是否真实,还可以确保发送者无法否认曾发送过该信息。非对称加密的缺点是加解密速度要远远慢于对称加密,在某些极端情况下,甚至能比非对称加密慢上1000倍。

 

主要功能

 

非对称加密体系不要求通信双方事先传递密钥或有任何约定就能完成保密通信,并且密钥管理方便,可实现防止假冒和抵赖,因此,更适合网络通信中的保密通信要求。

对称加密和非对称加密