对称加密 - DES
- 真正的加密算法,带密钥,加密和解密使用相同的密钥
- 对称加密优点是算法公开、计算量小、加密速度快、加密效率高
- 双方都保存秘钥,其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担
- DES使用56位密钥,以现代计算能力,24小时内即可被破解。虽然如此,在某些简单应用中,我们还是可以使用DES加密算法
1 | public class DES { |
非对称加密 - RSA
1、用RSA算法生成一对密钥,公钥发放给外部客户,私钥自己保管;有以下应用场景:
【公钥加密、私钥解密】或者【私钥签名、公钥验证】
2、非对称加解密的理解:
- 小明想秘密给小英发送消息
- 小英手里有一个盒子(public key),这个盒子只有小英手里的钥匙(private key)才打得开
- 小英把盒子送给小明(分发公钥)
- 小明写好消息放进盒子里,锁上盒子(公钥加密)
- 小明把盒子寄给小英(密文传输)
- 小英用手里的钥匙打开盒子,得到小明的消息(私钥解密)
- 假设小刚劫持了盒子,因为没有小英的钥匙,他也打不开
与DES不同,RSA算法中,每个通信主体都有两个钥匙,一个公钥一个私钥。
就是有2把钥匙
- 使用publicKey可以对数据进行加密
- 使用Key才能对数据进行解密
单方向传输
用公钥加密的数据,只有私钥能解开(可用于加密);
同时,使用私钥加密的数据,只有公钥能解开(签名)。但是速度很慢(比私钥加密慢100到1000倍),
公钥的主要算法有RSA,还包括Blowfish,Diffie-Helman等。
公钥与私钥
- 权威数字认证机构(CA)给所有通信主体(个人或组织)颁发公钥和私钥,彼此配对,分别唯一。
- 私钥好比数字指纹,同时具有解密和加密功能。个人保管,不公开。
- 公钥好比安全性极高的挂号信箱地址,公开。
公私钥加解密举例
设若甲有一份需保密的数字商业合同发给乙签署。经过如下步骤:
- 甲用乙的公钥对合同加密。
- 密文从甲发送到乙。
- 乙收到密文,并用自己的私钥对其解密。
- 解密正确,经阅读,乙用自己的私钥对合同进行签署。
- 乙用甲的公钥对已经签署的合同进行加密。
- 乙将密文发给甲。
- 甲用自己的私钥将已签署合同解密。
- 解密正确,确认签署。
公私钥加解密说明
从以上步骤,我们知道:
- 用公钥加密的密文能且只能用与其唯一配对的私钥才能解开。
- 如果某份密文被解开,那么肯定是密文的目标信息主体解开的。
- 私钥因其唯一标识所有者的属性,被用于数字签名,具有法律效力。
一。 公私钥生成
- 随机选定两个大素数p, q.
- 计算公钥和私钥的公共模数 n = pq .
- 计算模数n的欧拉函数 φ(n) .
- 选定一个正整数e, 使1 < e < φ(n) , 且e与φ(n)互质.
- 计算d, 满足 de ≡ 1 (mod φ(n) ), (k为某个正整数).
6.n与e决定公钥, n与d决定私钥.
二。加解密
该过程为小张给小李发消息,公钥为小李的公钥(n & e), 私钥为小李的私钥(n & d).
- 小张欲给小李发一个消息M, 他先把M转换为一个大数m < n, 然后用小李的公钥(n & e)把m加密为另一个大数:
c = me mod n - 小李收到小张发来的大数c, 着手解密. 通过自己的私钥(n & d), 得到原来的大数m:
m = cd mod n
3.再把m转换为M, 小李即得到小张的原始消息.
这个过程之所以能通过, 是因为有如下等式:
cd ≡(me)d ≡med (mod n)