Android笔记-对称与非对称加密及DH密钥交换
Posted IT1995
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android笔记-对称与非对称加密及DH密钥交换相关的知识,希望对你有一定的参考价值。
对称加密算法
AES:Advanced Encryption Standard,高级加密标准。
算法逻辑是这样的:
加密:C = E(K, P) 其中P为明文,K为密钥,C为密文;
解密:P = D(K, C) 其中C为密文,K为密钥,P为明文;
加密解密使用同一个密钥,用同样的方式还原明文;
优点
1.加密效率高;
2.计算量小;
3.使用方便。
缺点:
1.双方需要协商密钥,一旦密钥泄漏则机密系统崩塌;
2.密钥维护和更新困难。
非对称加密算法
RSA:是一种公开密钥体制;
RSA算法可靠性基础:
1.大质数相乘计算很容易;
2.对极大整数做因数分解很困难,如1111 * 3331 = 3700741,但是3700741 = ? * ?就很多了。
优点:
1.公钥可可以开放;
2.密钥方便管理;
3.安全性高。
缺点:
1.性能差,加密时间长;
2.使用相对复杂。
密钥交换算法DH
DH:Diffie-Hellman,是一种保存共享KEY安全的穿越不安全网络的方法;
1.不需要保证信道安全;
2.计算公式可完全公开;
3.双方不需要指定对方的私钥;
4.可协商出一个其他人都不知道的密钥;
关键词: PubKey:公钥(可公开)、PriKey:私钥(不公开)、Secret:密钥(加密用)
如这样的场景,客户端(A)和服务端(B)进行通信。
公钥公式:A|B = g exp (a|b) % p
私钥公式:s = B|A exp(a|b) %p
上面的公式都可以公开到互联网
比如公开的g=11,p=29
私钥是不会公开的,都是自己用的,A的私钥为4,B的私钥为6。
A的公钥:(11 ^ 4) mod 29 = 25
B的公钥:(11 ^ 6) mod 29 = 9
A拿B的公钥算密钥:s = (9 ^ 4) mod 29 = 7
B拿A的公钥算密钥:s = (25 ^ 6) mod 29 = 7
这样大家都知道是7了,就用这个密钥作为对称加密的密钥。
注意:
1.实际过程中,这个数据是比较大的复杂的,不存在计算这么简单的情况;
2.如果C(黑客)想从网络中获取(不考虑破解等因素)是算不出其密钥的,因为密钥都是通过自己的私钥和对方的公钥计算的,黑客是拿不到A和B的私钥的,所以无法解密。
以上是关于Android笔记-对称与非对称加密及DH密钥交换的主要内容,如果未能解决你的问题,请参考以下文章