【加密】对称加密和非对称加密、数字签名
非常好的文章:《三分钟了解对称加密和非对称加密是如何工作的》https://zhuanlan.zhihu.com/p/108627377
对称加密
1.1 定义
指加密和解密使用相同**的加密算法(或是使用两个可以简单地相互推算的**),又叫传统密码算法。
对称**加密,又称私钥加密。是指信息的发送方和接收方采用同一个**去进行数据的加密和解密。如下图所示:
1.2 优缺点
优点:
算法公开、计算量小、加密速度快、加密效率高。
缺点:
(1)交易双方都使用同样钥匙,安全性得不到保证。
(2)每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量呈几何级数增长,**管理成为用户的负担。对称加密算法在分布式网络系统上使用较为困难,主要是因为**管理困难,使用成本较高。
1.3 常用对称加密算法
基于“对称**”的加密算法主要有DES、3DES(TripleDES)、AES、RC2、RC4、RC5和Blowfish等。本文只介绍最常用的对称加密算法DES、3DES(TripleDES)和AES。
(AES:https://blog.****.net/gulang03/article/details/81175854)
如何把**发送到接收方(需要解密数据的人)?如果接收方住在我们小区,那么可以把**抄纸上,直接跑过去给他。但是,如果他住在别的城市,别的国家,怎么办?邮寄吗?太慢!通过 Email 发送吗?被黑客拦截了怎么办?
为了解决这个问题,就有了非对称加密。
非对称加密( Asymmetric Cryptography )
非对称加密,又称公钥加密,它解决了对称加密的缺陷,使得比特币更安全。
非对称加密和对称加密,两者的主要区别在于:对称加密使用共享(单一)**加密解密数据,而非对称加密使用**对解密数据。如下图所示,两把钥匙不同。
非对称加密
2.1 定义
- 非对称加密算法又称现代加密算法。
- 非对称加密是计算机通信安全的基石,保证了加密数据不会被**。
- 与对称加密算法不同,非对称加密算法需要两个**:公开**(publickey) 和私有密(privatekey)
- 公开**和私有**是一对
- 如果用公开**对数据进行加密,只有用对应的私有**才能解密。
- 如果用私有**对数据进行加密,只有用对应的公开**才能解密。
- 因为加密和解密使用的是两个不同的**,所以这种算法叫作非对称加密算法。
特点
算法强度复杂,安全性依赖于算法与**。
缺点
由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。
与对称加密算法的对比
- 优点:其安全性更好,非对称加密使用一对秘钥,一个用来加密,一个用来解密,而且公钥是公开的,秘钥是自己保存的,不需要像对称加密那样在通信之前要先同步秘钥。
- 缺点:非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
在非对称加密中使用的主要算法有:RSA、Elgamal、ESA、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。不同算法的实现机制不同,可参考对应算法的详细资料。
经典算法-->RSA
RSA算法基于一个十分简单的数论事实:将两个大质数(素数)相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加***。比如:取两个简单的质数:89、97,得到两者乘积很简单8633;但是要想对8633进行因式分解,其工作量成几何增加。
使用场景:
- 支付宝开放平台的支付业务
支付宝会让你生成公私钥(openssl可以直接生成),私钥放在自己的服务端(切记),公钥上传到支付宝的商户平台,
拿到订单信息的时候,请求服务端通过私钥签名后的订单信息,
然后调用支付宝的sdk,支付宝会拿公钥来验签,验证成功之后才会进入支付选项。
- Https网络请求的SSL层
SSL层的简单过程如下:
RSA应用场景:
由于RSA算法的加密解密速度要比对称算法速度慢很多,在实际应用中,通常采取
数据本身的加密和解密使用对称加密算法(AES)。
用RSA算法加密并传输对称算法所需的**。
数字签名
数字签名是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。
数字签名是非对称**加密技术与数字摘要技术的应用。
简单说,非对称加密可以防止数据被**,数字签名可以防止数据被篡改。
公钥签名体制的基本思路是:
①发送者A用自己的私钥加密信息,从而对文件签名
②将签名的文件发送给接受者B
③B利用A的公钥(可以从CA机构等渠道获得)解密文件,从而验证签名。