一、非对称加密算法简介
1.特点
- 属于高级算法
- 双保险
- 公钥、私钥
2.常见非对称加密算法
- DH(Diffie-Hellman)密钥交换算法,由两个人名命名,是非对称加密算法的起源。
- RSA——基于因子分解,典型的非对称加密算法,由三个人名命名,是当今世界使用最广的非对称加密算法,可用于数据加密、数字签名。
- ElGamal——基于离散对数,由一个人名命名。
- ECC(Elliptical Curve Cryptography)——椭圆曲线加密,了解即可。
二、非对称加密算法——DH
1.回顾对称加密算法的困扰
- 数据安全
- 密钥管理复杂
- 密钥传递过程复杂,有泄露密钥的风险
2.DH密钥交换算法如何解决对称加密算法的困扰
- 构建本地密钥,解决密钥传递问题
3.DH密钥交换特点
- 长度512~1024(64的倍数),默认1024
- 实现方JDK
4.DH算法的实现过程,以及用到的类
(1)初始化发送方密钥
—KeyPairGenerator 生成KeyPair
—KeyPair 常用的密钥载体,又称密钥对,通常包括公钥和私钥
—PublicKey
(2)初始化接收方密钥
—KeyFactory 生成密钥,包括公钥和私钥
—X509EncodedKeySpec 根据ASN.1标准进行密钥编码
—DHPublicKey
—DHParameterSpec 随着DH算法使用的参数的集合
—KeyPairGenerator
—PrivateKey
(3)密钥构建
—KeyAgreement 提供密钥一致性(或密钥交换)协议的功能,也可以成为引擎类,主要在DH算法中出现,在其他算法出现的几率很低
—SecretKey 秘密密钥,对称的密钥,生成一个分组的秘密密钥,提供类型安全的操作,继承自Key接口
—KeyFactory
—X509EncodedKeySpec
—PublicKey
(4)加密、解密
—Cipher 为加密解密提供密码功能,根据JDK文档可以看出其是JCE框架的核心内容
5.密钥初始化以及密钥消息传递过程如图所示:
6.代码实现,可参考本人码云项目:https://gitee.com/kevinshaw/Security 的MyDH类
三、非对称加密算法——RSA
1.简介:
- 唯一广泛接受并实现的通用公开算法,是一种事实上的标准
- 并且用于数据加密和数字签名
- 公钥加密、私钥解密
- 私钥加密、公钥解密
- RSA基于大数因子分解
2.不同的实现方式如图:
3.RSA两种加解密数据传输过程,如图:
4.代码实现,可参考本人码云项目:https://gitee.com/kevinshaw/Security 的MyRSA类
四、非对称加密算法——ElGamal
1.简介:
- 只提供公钥加密算法,区别RSA
- 只有Bouncy Castle提供实现,遵循公钥加密,私钥解密
2.密钥初始化进行的操作如图:
3.Elgamal加解密数据传输过程如图:
本文为原创文章,如果对你有一点点的帮助,别忘了点赞哦!比心!如需转载,请注明出处,谢谢!