非对称加密算法

概述

对称加密算法是因为秘钥的对称而由来的,而非对称加密算法是因为和对称加密相反的原理来实现的,是高级的,举个例子:
在这里插入图片描述
银行的保险柜,肯定是银行工作人员拿着他自己那把钥匙,加上事主自己那把钥匙,共同才能打开保险柜的,这种方式我们叫做双保险。
非对称加密算法是分公钥、私钥,公钥是非安全的方式(公开)发放的,私钥自己保存。公钥、私钥通常情况都是成对出现的,使用公钥加密的数据只能使用和它一对的私钥来解密,反之亦然。注意一点:在非对称加密算法里,有些算法可以公钥加密私钥解密、私钥加密公钥解密都支持的,有的只支持一种方式。

DH(Diffie-Hellman)秘钥交换算法

对称加密算法的秘钥管理复杂,避免秘钥传递过程中的泄露成为了一个困扰。因此,出现了秘钥交换算法,它是怎么解决的呢?是通过构建本地秘钥来解决的,但是构建的本地秘钥对于双方来说是一致的,也是一种对称的行为。

秘钥长度默认长度工作模式填充方式实现方
512~1024(64的倍数)1024JDK

算法实现涉及到的类介绍

  • 初始化发送方秘钥

    • KeyPairGenerator:生成秘钥的载体
    • KeyPair:密钥的载体
    • PublicKey:公钥
        //创建KeyPairGenerator对象
        KeyPairGenerator senderKeyPairGenerator=KeyPairGenerator.getInstance("DH");
    
  • 初始化接收方秘钥

    • KeyFactory:秘钥工厂,作用是生成秘钥,也可以说是通过秘钥的规范来还原秘钥 ,方法generatePublic()、generatePrivate()
    • X509EncodedKeySpec:根据ASN.1标准进行秘钥编码
    • DHPublicKey:DH专门提供的公钥的具体形式
    • DHParameterSpec:DH算法使用的参数的集合,就是DH中使用的参数通常都是放到这个类里使用
    • KeyPairGenerator:生成KeyPair的类
    • PrivateKey:私钥
  • 秘钥构建

    • KeyAgreement:提供秘钥一致性(或秘钥交换)协议的功能
    • SecretKey:秘密秘钥,存在的唯一目的是为了生成一个分组的秘密秘钥,同时提供了类型安全的操作
    • KeyFactory
    • X509EncodedKeySpec
    • PublicKey
  • 加密、解密

    • Cipher:为加密、解密提供密码功能的类,它是JCE框架的核心内容,通过工厂方法创建实例

    demo见 :
    在这里插入图片描述

RSA-基于因子分解

DH算法为非对称加密提供了一个好的基础,RSA就是在这个基础上提供的一个好的算法,是被广泛接受实现的公开算法,有的人说它已经成为非对称加密的标准,当然这不是官方的机构的说法,是事实上的标准。
特点是不仅仅在数据加密时候用到,也在数字签名的时候用到。它有公钥加密私钥解密、公钥解密私钥加密两种方式,它比DES来说比较慢。
基于的是大因数分解比较难数学难题的一个算法。

秘钥长度默认长度工作模式填充方式实现方
512~65536(64的倍数)1024ECBNoPadding、PKCS1Padding、OAEPWITHMD5AndMGF1Pading、OAEPWITHSHA1AndMGF1Pading、OAEPWITHSHA256AndMGF1Pading、OAEPWITHSHA384AndMGF1Pading、OAEPWITHSHA512AndMGF1PadingJDK
512~65536(64的倍数)2048NONENoPadding、PKCS1Padding、OAEPWITHMD5AndMGF1Pading、OAEPWITHSHA1AndMGF1Pading、OAEPWITHSHA224AndMGF1Pading、OAEPWITHSHA256AndMGF1Pading、OAEPWITHSHA384AndMGF1Pading、OAEPWITHSHA512AndMGF1Pading、ISO9796-1PaddingBC

在这里插入图片描述

ElGamal-基于离散对数

和RSA不同的是,一:只提供公钥加密私钥解密算法,不提供私钥加密公钥解密,二:JDK里没有实现,Bouncy Castle有实现。这个算法在构建秘钥的时候和RSA几乎是相同的,说是RSA的补充也好,说是和RSA共同构成了非对称加密的算法实现也好,jdk是没有提供的,BC提供了。生成秘钥对后,公钥可以通过安全、非安全的方式发送给对方,其实公钥通过安全、非安全的方式发送给对方并没有那么重要了。

秘钥长度默认长度工作模式填充方式实现方
160~16384(8的倍数)1024ECB、NONENoPadding、PKCS1Padding、OAEPWITHMD5AndMGF1Pading、OAEPWITHSHA1AndMGF1Pading、OAEPWITHSHA224AndMGF1Pading、OAEPWITHSHA256AndMGF1Pading、OAEPWITHSHA384AndMGF1Pading、OAEPWITHSHA512AndMGF1Pading、ISO9796-1PaddingBC

在这里插入图片描述

ECC(Elliptical Curve Cryptography)—椭圆曲线加密

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值