Java加解密与数字签名

**
Java加解密
**
实现方式:JDK实现,CC,BC
JDK提供比较基础的底层的实现;CC提供一些简化的操作;BC提供补充
一、Base64加密
非常简单,加密解密就一个函数。
Java加解密与数字签名
二、消息摘要算法加密————主要用于验证数据完整性。
MD(消息摘要):
SHA(安全散列)
JDK实现和MD一样。
BC实现如下:(Digest类)
Java加解密与数字签名
MAC(消息认证码)——含有**的散列函数算法
兼容MD和SHA的特性,但加入了**。
主要JDK和Bouncy Castle实现。
JDK实现:获取或定义**(byte[]数组),Mac类 实例化、初始化、执行。
BC实现:Hmac类 实例化、初始化、执行。
三、对称加解密
对称加密指加密和解密使用相同**的加密算法。这里将介绍DES、3重DES、AES和PBE几种常见的对称加密算法在Java中的实现。
DES、3DES、AES(**)、PBE(口令和盐)
DES:
JDK实现:生成并转换Key;Cipher类的实例化(getInstance)、初始化(init选择模式与Key);执行(doFinal)加解密。
推荐BC实现方式:Security.addProvider(new BouncyCastleProvider());
然后剩下的代码就可以和JDK实现代码基本一样了。
3DES、AES实现基本一样,所以就不一一介绍。。。
PBE(基于口令的加密)
特点:通过 salt + 口令
实现:初始化盐;生成口令;Cipher类加解密。
四、非对称加解密
非对称加密算法是一种基于**的保密方法,需要公开**和私有**,在文件加密、尤其是网银中应用广泛。这里主要介绍非对称加密算法的实现过程,DH、RSA和ELGamal等几种常见的非对称加密算法的在Java中的应用。
概念:公钥、私钥;
DH(**交换算法):
代码实现有些麻烦
——初始化发送方**
-KeyPairGenerator :能产生KeyPair
-KeyPair :常用的**载体,称为**对,分为公钥PublicKey与私钥PrivateKey。
-PublicKey
——初始化接收方**
-KeyFactory :**工厂,生成**,通过某种**的规范来还原**
-X509EncodedKeySpec :根据ASN.1进行**编码
-DHPublicKey :
-DHParameterSpec :遵从DH算法发参数的集合
-KeyPairGenerator :
-PrivateKey :
——双发根据公布的对方的PublicKey构建本地**,
——构建出来的本地**是一致的
-KeyAgreement :用来提供**一致性协议
-SecretKey :秘***,对称
-KeyFactory -X509EncodedKeySpec -PublicKey
——加密、解密(利用本地**)
-Cipher :为加密和解密提供密码功能的类
**学习Java的同学注意了!!!
学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:521352947 我们一起学Java!**