午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

JAVA加密算法實(shí)密鑰一致協(xié)議代碼示例

瀏覽:23日期:2022-08-22 13:47:58

密鑰一致協(xié)議是由公開密鑰密碼體制的奠基人 Diffie 和 Hellman 所提出的一種思想。

代表:指數(shù)密鑰一致協(xié)議 (Exponential Key Agreement Protocol)

使用流程介紹:

甲方構(gòu)建密鑰對(duì),將公鑰公布給乙方,將私鑰保留;雙方約定數(shù)據(jù)加密算法;乙方通過(guò)甲方公鑰構(gòu)建密鑰對(duì),將公鑰公布給甲方,將私鑰保留。

甲方使用私鑰、乙方公鑰、約定數(shù)據(jù)加密算法構(gòu)建本地密鑰,然后通過(guò)本地密鑰加密數(shù)據(jù),發(fā)送給乙方加密后的數(shù)據(jù);乙方使用私鑰、甲方公鑰、約定數(shù)據(jù)加密算法構(gòu)建本地密鑰,然后通過(guò)本地密鑰對(duì)數(shù)據(jù)解密。

乙方使用私鑰、甲方公鑰、約定數(shù)據(jù)加密算法構(gòu)建本地密鑰,然后通過(guò)本地密鑰加密數(shù)據(jù),發(fā)送給甲方加密后的數(shù)據(jù);甲方使用私鑰、乙方公鑰、約定數(shù)據(jù)加密算法構(gòu)建本地密鑰,然后通過(guò)本地密鑰對(duì)數(shù)據(jù)解密。

不單單是甲乙雙方兩方,可以擴(kuò)展為多方共享數(shù)據(jù)通訊,這樣就完成了網(wǎng)絡(luò)交互數(shù)據(jù)的安全通訊!

參考示例:

package test;import java.security.KeyFactory;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.PublicKey;import java.security.Security;import java.security.spec.X509EncodedKeySpec;import javax.crypto.Cipher;import javax.crypto.KeyAgreement;import javax.crypto.SecretKey;import javax.crypto.interfaces.DHPublicKey;import javax.crypto.spec.DHParameterSpec;public class DHKey {public static void main(String argv[]) {try {DHKey my = new DHKey();my.run();} catch (Exception e) {System.err.println(e);}}private void run() throws Exception {// A 構(gòu)建密鑰對(duì),公鑰給BSecurity.addProvider(new com.sun.crypto.provider.SunJCE());KeyPairGenerator aliceKpairGen = KeyPairGenerator.getInstance('DH');aliceKpairGen.initialize(512);KeyPair aliceKpair = aliceKpairGen.generateKeyPair();byte[] alicePubKeyEnc = aliceKpair.getPublic().getEncoded(); // 公開密鑰// B 根據(jù)A的公鑰構(gòu)建自己的密鑰對(duì),同時(shí)把自己生成的公鑰給A,通過(guò)A的公鑰和自己的私鑰構(gòu)建DES的密鑰KeyFactory bobKeyFac = KeyFactory.getInstance('DH');X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(alicePubKeyEnc);PublicKey alicePubKey = bobKeyFac.generatePublic(x509KeySpec);DHParameterSpec dhParamSpec = ((DHPublicKey) alicePubKey).getParams();KeyPairGenerator bobKpairGen = KeyPairGenerator.getInstance('DH');bobKpairGen.initialize(dhParamSpec);KeyPair bobKpair = bobKpairGen.generateKeyPair();KeyAgreement bobKeyAgree = KeyAgreement.getInstance('DH');bobKeyAgree.init(bobKpair.getPrivate());bobKeyAgree.doPhase(alicePubKey, true);SecretKey bobDesKey = bobKeyAgree.generateSecret('DES');byte[] bobPubKeyEnc = bobKpair.getPublic().getEncoded();// A 通過(guò)本地密鑰和A的公鑰構(gòu)建DES密鑰,這里還做一個(gè)驗(yàn)證KeyFactory aliceKeyFac = KeyFactory.getInstance('DH');x509KeySpec = new X509EncodedKeySpec(bobPubKeyEnc);PublicKey bobPubKey = aliceKeyFac.generatePublic(x509KeySpec);KeyAgreement aliceKeyAgree = KeyAgreement.getInstance('DH');aliceKeyAgree.init(aliceKpair.getPrivate()); // 秘密密鑰aliceKeyAgree.doPhase(bobPubKey, true);SecretKey aliceDesKey = aliceKeyAgree.generateSecret('DES');if (aliceDesKey.equals(bobDesKey))System.out.println('A 和 B 的公鑰 相同');elseSystem.out.println('A 和 B 的公鑰 不同');// B 通過(guò)密鑰加密數(shù)據(jù)Cipher bobCipher = Cipher.getInstance('DES');bobCipher.init(Cipher.ENCRYPT_MODE, bobDesKey);String bobinfo = '這是B的機(jī)密信息';System.out.println('B 加密前原文 :' + bobinfo);byte[] cleartext = bobinfo.getBytes();byte[] ciphertext = bobCipher.doFinal(cleartext);// A 通過(guò)密鑰解密數(shù)據(jù)Cipher aliceCipher = Cipher.getInstance('DES');aliceCipher.init(Cipher.DECRYPT_MODE, aliceDesKey);byte[] recovered = aliceCipher.doFinal(ciphertext);System.out.println('A解密 B 的信息 :' + (new String(recovered)));}}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 美日韩av在线 | 91精品国产综合久久精品图片 | 狠狠撸在线视频 | 欧美亚洲网站 | 一级黄色片在线播放 | 婷婷丁香亚洲 | 欧美aaa级| 91精品国产综合久久久久久 | 青青操网| 亚洲视频欧美 | 天天摸天天操天天干 | 视频一区在线播放 | 精品视频www | 亚洲一区免费观看 | 深爱激情五月婷婷 | 在线观看日韩视频 | 亚洲成人一区二区三区 | 久久精品一级片 | 日韩中文字幕免费在线观看 | 成人黄色录像 | 中文字幕在线观看日韩 | av不卡一区二区三区 | 久久久午夜影院 | 亚洲国产精品99 | 成人一区二区视频 | 国产视频精品免费 | av一区不卡 | 国产一区二区三区视频在线观看 | 在线欧美成人 | 在线看v| 成人免费播放 | 国产精品久久免费视频 | 激情中文网 | 午夜黄色福利视频 | www.蜜桃av| 色综合日韩 | 毛片毛片毛片毛片毛片毛片毛片毛片 | 天天色综合色 | 日韩av一区二区在线播放 | 亚洲婷婷综合网 | 亚洲成人激情在线 |