Java实现加解密(四)之非对称加密

本文介绍非对称加密算法的基本概念及DH、RSA、ElGamal三种算法的特点与应用。DH算法解决了对称加密的密钥传递难题;RSA算法广泛应用于数据加密和数字签名;ElGamal算法则专注于公钥加密。

一、非对称加密算法简介

      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加解密数据传输过程如图:

     

 

 

本文为原创文章,如果对你有一点点的帮助,别忘了点赞哦!比心!如需转载,请注明出处,谢谢!

 

转载于:https://my.oschina.net/aibinxiao/blog/1550577

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值