国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

JAVA加密算法實密鑰一致協議代碼示例

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

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

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

使用流程介紹:

甲方構建密鑰對,將公鑰公布給乙方,將私鑰保留;雙方約定數據加密算法;乙方通過甲方公鑰構建密鑰對,將公鑰公布給甲方,將私鑰保留。

甲方使用私鑰、乙方公鑰、約定數據加密算法構建本地密鑰,然后通過本地密鑰加密數據,發送給乙方加密后的數據;乙方使用私鑰、甲方公鑰、約定數據加密算法構建本地密鑰,然后通過本地密鑰對數據解密。

乙方使用私鑰、甲方公鑰、約定數據加密算法構建本地密鑰,然后通過本地密鑰加密數據,發送給甲方加密后的數據;甲方使用私鑰、乙方公鑰、約定數據加密算法構建本地密鑰,然后通過本地密鑰對數據解密。

不單單是甲乙雙方兩方,可以擴展為多方共享數據通訊,這樣就完成了網絡交互數據的安全通訊!

參考示例:

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 構建密鑰對,公鑰給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 根據A的公鑰構建自己的密鑰對,同時把自己生成的公鑰給A,通過A的公鑰和自己的私鑰構建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 通過本地密鑰和A的公鑰構建DES密鑰,這里還做一個驗證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 通過密鑰加密數據Cipher bobCipher = Cipher.getInstance('DES');bobCipher.init(Cipher.ENCRYPT_MODE, bobDesKey);String bobinfo = '這是B的機密信息';System.out.println('B 加密前原文 :' + bobinfo);byte[] cleartext = bobinfo.getBytes();byte[] ciphertext = bobCipher.doFinal(cleartext);// A 通過密鑰解密數據Cipher aliceCipher = Cipher.getInstance('DES');aliceCipher.init(Cipher.DECRYPT_MODE, aliceDesKey);byte[] recovered = aliceCipher.doFinal(ciphertext);System.out.println('A解密 B 的信息 :' + (new String(recovered)));}}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 国产91香蕉视频 | 欧美日韩另类综合 | 久久狠狠 | 久久国产美女免费观看精品 | 色秀视频在线观看88品善网 | 亚洲天堂成人 | 九九亚洲精品 | 美国成人免费视频 | 全高清特级毛片 | 欧美啪啪一级毛片 | 亚洲精品一区二区久久 | 亚洲加勒比久久88色综合一区 | 久久五月女厕所一区二区 | 免费a级毛片视频 | 日韩在线不卡一区在线观看 | 国产偷国产偷亚洲高清在线 | 成人免费网站视频 | 怡红院免费全部视频在线 | 国产精品美女一级在线观看 | 97久久精品午夜一区二区 | 免费一级欧美大片在线观看 | 欧美国产在线一区 | 香港经典a毛片免费观看爽爽影院 | 欧美成人观看视频在线 | 99精品视频一区在线视频免费观看 | 国产精品免费久久久免费 | 久久中出 | 亚洲国产成人九九综合 | 国产一区二区精品久 | 国产成人在线小视频 | 久久影院在线 | 日本免费成人网 | 亚洲国产欧美精品 | 美女被躁免费视频软件 | 日韩欧美国产高清在线观看 | 三级国产在线观看 | 97天天干| 91精品一区二区三区在线 | 美女图片131亚洲午夜 | 最新中文字幕一区二区乱码 | 狠狠色丁香久久综合网 |