一、对称加密
对称加密指加密和解密使用相同密钥的加密算法。
1)优点:
- 算法公开、计算量小、加密速度快、加密效率高。
2)缺点:
- 交易双方都使用同样钥匙,安全性得不到保证。
- 密钥管理困难,使用成本较高。
3)具体算法:
- DES
- 3DES
- TDEA
- Blowfish
- RC5
- IDEA
二、非对称加密
1)简介:
非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。
2)工作原理:
- 甲方生成一对密钥并将公钥公开。
- 需要向甲方发送信息的其他角色(乙方)使用该密钥(甲方的公钥)对机密信息进行加密后再发送给甲方。
- 甲方再用自己私钥对加密后的信息进行解密。
- 甲方想要回复乙方时正好相反,使用乙方的公钥对数据进行加密,同理,乙方使用自己的私钥来进行解密。
3)优点:
- 非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要。
- 密钥也不像对称加密那样需要那么多,管理方便。
4)缺点:
- 算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。
5)具体算法:
- RSA
- Elgamal
- 背包算法
- Rabin
- D-H
- ECC
数字证书
数字证书借用了非对称加密技术,刚好与非对称加密的过程相反。
数字证书的基本架构利用一对密钥实施加密和解密。其中密钥包括私钥和公钥,私钥主要用于签名和解密,由用户自定义,只有用户自己知道;公钥用于签名验证和加密,可被多个用户共享。
特点:
- 安全性。用户申请证书时会有两份不同证书,分别用于工作电脑以及用于验证用户的信息交互,若所使用电脑不同,用户就需重新获取用于验证用户所使用电脑的证书,而无法进行备份,这样即使他人窃取了证书,也无法获取用户的账户信息,保障了账户信息。
- 唯一性。数字证书依用户身份不同给予其相应的访问权限,若换电脑进行账户登录,而用户无证书备份,其是无法实施操作的,只能查看账户信息,数字证书就犹如“钥匙”一般,所谓“一把钥匙只能开一把锁”,就是其唯一性的体现。
- 便利性。用户可即时申请、开通并使用数字证书,且可依用户需求选择相应的数字证书保障技术。用户不需要掌握加密技术或原理,就能够直接通过数字证书来进行安全防护,十分便捷高效。数字证书是由CA中心所签发的,CA中心是一个具权威性、依赖度极高的第三方,其资格证书经国家颁发,可有效保障网络数据信息的安全性,使数据信息处国家掌握当中。用户在浏览网络数据信息或进行网上交易时,利用数字证书可保障信息传输及交易的安全性。
三、不可逆加密
1)简介:
不可逆加密算法的特征是加密过程中不需要使用密钥,输入明文后由系统直接经过加密算法处理成密文,这种加密后的数据是无法被解密的,只有重新输入明文,并再次经过同样不可逆的加密算法处理,得到相同的加密密文并被系统重新识别后,才能真正解密。
显然,在这类加密过程中,加密是自己,解密还得是自己,而所谓解密,实际上就是重新加一次密,所应用的“密码”也就是输入的明文。
2)优点:
- 不可逆加密算法不存在密钥保管和分发问题,非常适合在分布式网络系统上使用。
3)缺点:
- 加密计算复杂,工作量相当繁重,通常只在数据量有限的情形下使用。
信息摘要
信息摘要就是一种不可逆加密算法,就是把任意长度的输入揉和而产生长度固定的伪随机输入的算法。可以用来作数字签名。
特点:
- 无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。
- 消息摘要看起来是“随机的”。但是,一个摘要并不是真正随机的,因为用相同的算法对相同的消息求两次摘要,其结果必然相同。
- 一般地,只要输入的消息不同,对其进行摘要以后产生的摘要消息也必不相同。好的摘要算法,没有人能从中找到“碰撞”,虽然“碰撞”是肯定存在的。
- 消息摘要函数是无陷门的单向函数,即只能进行正向的信息摘要,而无法从摘要中恢复出任何的消息,甚至根本就找不到任何与原信息相关的信息。
具体算法:
- MD5算法
- SHA-1
四、OpenSSL
1)简介:
openssl是一个功能丰富且自包含的开源安全工具箱。它提供的主要功能有:
- SSL协议实现(包括SSLv2、SSLv3和TLSv1)
- 大量软算法(对称/非对称/摘要)
- 大数运算
- 非对称算法密钥生成
- ASN.1编解码库
- 证书请求(PKCS10)编解码
- 数字证书编解码
- CRL编解码
- OCSP协议
- 数字证书验证
- PKCS7标准实现
- PKCS12个人数字证书格式实现等功能。
openssl采用C语言作为开发语言,这使得它具有优秀的跨平台性能。
2)对文件进行加密:
对称加密:
# 加密
openssl enc -e -aes256 -in data.zip -out back.zip
# 解密
openssl enc -d -aes256 -in back.zip -out data.zip
非对称加密:
# 生成密钥
openssl genrsa -out rsa.key 2048
# 取出公钥
openssl rsa -in rsa.key -pubout -out pub.key
# 公钥加密
openssl rsautl -encrypt -inkey pub.key -pubin -in data.zip -out back.zip
# 私钥解密
openssl rsautl -decrypt -inkey rsa.key -in back.zip -out data.zip