解释:
首先,发送方产生密钥对,并公开 公钥;接收方根据这个公钥产生密钥对,然后也公开自己的 公钥。
然后,发送方根据接收方的 公钥 产生自己本地的密钥(本地密钥一般是采用对称密钥),接收方也根据发送方的 公钥 产生自己本地的密钥。其实,这样双方产生的本地密钥是相同的。
最后,双方就可以利用本地密钥进行加解密了。
RSA(基于因子分解):代码实现较为简单
初始化密钥(包含公钥、密钥)。
可以利用公钥加密,私钥解密;也可以私钥加密,公钥解密
使用过程:双方分别掌握公钥与私钥中的一种,然后就可以加密并传输数据了。
EIGamal(基于离散因数)
JDK没有实现,只能利用BC实现。
首先,Security.addProvider(new BouncyCastleProvider());
之后实现类似于RSA。
五.Java实现数字签名
数字签名用于鉴别数字信息,公钥和私钥,私钥对数据签名,公钥用于检验。
过程为:首先初始化一个密钥对,在密钥对的基础上进行签名与验证。
1、RSA:既可以加解密,也可以数字签名。
初始化密钥对:KeyPairGenerator、KeyPair、RSAPublic、PSAPrivate;
执行签名;Signature类
验证签名;Signature类
2、DSA(数字签名算法)
初始化密钥对,公钥、私钥;
执行签名,用私钥签名;
验证签名,用公钥验证;
3、ECDSA
微软序列号便是采用的ECDSA算法进行的签名。速度快,强度高,签名短。
初始化密钥对;
执行签名;
验证签名
**学习Java的同学注意了!!!
学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:521352947 我们一起学Java!* *
Java加解密与数字签名2
最新推荐文章于 2021-02-13 05:36:43 发布