最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java 非對稱加密算法DH實現(xiàn)詳解

 更新時間:2019年07月27日 16:16:22   作者:小破孩123  
這篇文章主要介紹了java 非對稱加密算法DH實現(xiàn)詳解 ,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

非對稱加密算法是相對于對稱加密算法來說的,對于對稱加密算法請查閱之前的總結(jié),今天為大家介紹一下DH算法,DH是一種密鑰交換算法,接收方根據(jù)發(fā)送方加密時的密鑰,生成接收方解密密鑰。下面就一起來學(xué)習(xí)一下吧:

初始化發(fā)送方密鑰:

KeyPairGenerator sendKeyPairGenerator = KeyPairGenerator.getInstance("DH");
      sendKeyPairGenerator.initialize(512);
      KeyPair sendKeyPair = sendKeyPairGenerator.generateKeyPair();
      byte[] sendPublicKeyEnc = sendKeyPair.getPublic().getEncoded();//生成發(fā)送方公鑰,發(fā)送給接收方(網(wǎng)絡(luò)、文件...)

初始化接收方密鑰:

KeyFactory receiverKeyFactory = KeyFactory.getInstance("DH");
      X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(sendPublicKeyEnc);
      PublicKey receivePublicKey = receiverKeyFactory.generatePublic(x509EncodedKeySpec);
      DHParameterSpec dhParameterSpec = ((DHPublicKey)receivePublicKey).getParams();
      KeyPairGenerator receiverKeyPairGenerator = KeyPairGenerator.getInstance("DH");
      receiverKeyPairGenerator.initialize(dhParameterSpec);
      KeyPair receiverKeyPair = receiverKeyPairGenerator.generateKeyPair();
      PrivateKey receiverPrivateKey = receiverKeyPair.getPrivate();
      byte[] receiverPublicKeyEnc = receiverKeyPair.getPublic().getEncoded();

構(gòu)建接收方密鑰:

KeyAgreement receiverKeyAgreement = KeyAgreement.getInstance("DH");
      receiverKeyAgreement.init(receiverPrivateKey);
      receiverKeyAgreement.doPhase(receivePublicKey, true);
      
      SecretKey receiverDESKey = receiverKeyAgreement.generateSecret("DES");//接收方Key

構(gòu)建發(fā)送方密鑰:

KeyFactory sendKeyFactory = KeyFactory.getInstance("DH");
      x509EncodedKeySpec = new X509EncodedKeySpec(receiverPublicKeyEnc);
      PublicKey sendPublicKey = sendKeyFactory.generatePublic(x509EncodedKeySpec);
      
      KeyAgreement sendKeyAgreement = KeyAgreement.getInstance("DH");
      sendKeyAgreement.init(sendKeyPair.getPrivate());
      sendKeyAgreement.doPhase(sendPublicKey, true);
      
      SecretKey sendDESKey = sendKeyAgreement.generateSecret("DES");//發(fā)送方Key

發(fā)送方加密:

Cipher sendCipher = Cipher.getInstance("DES");
      sendCipher.init(Cipher.ENCRYPT_MODE, sendDESKey);
      byte[] sendResult = sendCipher.doFinal(src.getBytes());
      System.out.println("sendResult :"+Hex.encodeHexString(sendResult));

接收方解密:

Cipher receiverCipher = Cipher.getInstance("DES");
      receiverCipher.init(Cipher.DECRYPT_MODE, receiverDESKey);
      byte[] receiverResult = receiverCipher.doFinal(sendResult);
      System.out.println("receiverResult : "+new String (receiverResult));

基于密鑰交換的非對稱加密算法(DH),到這里就總結(jié)完畢了。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • AQS同步組件CyclicBarrier循環(huán)屏障用例剖析

    AQS同步組件CyclicBarrier循環(huán)屏障用例剖析

    這篇文章主要為大家介紹了AQS同步組件CyclicBarrier循環(huán)屏障用例剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • spring boot idea maven依賴找不到問題處理方法

    spring boot idea maven依賴找不到問題處理方法

    這篇文章主要介紹了spring boot idea 偶爾maven依賴找不到問題,這里總結(jié)了幾種處理方法,方便嘗試排查,對spring boot idea  maven依賴找不到問題感興趣的朋友跟隨小編一起看看吧
    2023-08-08
  • 如何基于SpringWeb?MultipartFile實現(xiàn)文件上傳、下載功能

    如何基于SpringWeb?MultipartFile實現(xiàn)文件上傳、下載功能

    在做項目時,后端經(jīng)常采用上傳文件組件MultipartFile,下面這篇文章主要給大家介紹了關(guān)于如何基于SpringWeb?MultipartFile實現(xiàn)文件上傳、下載功能的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • 如何理解SpringMVC

    如何理解SpringMVC

    Spring Web MVC是一種基于Java的實現(xiàn)了Web MVC設(shè)計模式的請求驅(qū)動類型的輕量級Web框架,即使用了MVC架構(gòu)模式的思想,將web層進(jìn)行職責(zé)解耦,基于請求驅(qū)動指的就是使用請求-響應(yīng)模型,框架的目的就是幫助我們簡化開發(fā)
    2021-06-06
  • java8 集合之Stack詳解及實例

    java8 集合之Stack詳解及實例

    這篇文章主要介紹了java8 集合之Stack詳解及實例的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 如何解決java壓縮文件亂碼問題

    如何解決java壓縮文件亂碼問題

    在本篇文章中我們給大家分享的是一篇關(guān)于java壓縮文件亂碼問題的解決辦法,有需要的朋友們可以學(xué)習(xí)下。
    2019-12-12
  • 解決SpringBoot使用devtools導(dǎo)致的類型轉(zhuǎn)換異常問題

    解決SpringBoot使用devtools導(dǎo)致的類型轉(zhuǎn)換異常問題

    這篇文章主要介紹了解決SpringBoot使用devtools導(dǎo)致的類型轉(zhuǎn)換異常問題,具有很好的參考價值,希望對大家有所幫助。 一起跟隨小編過來看看吧
    2020-08-08
  • java Timer 定時每天凌晨1點執(zhí)行任務(wù)

    java Timer 定時每天凌晨1點執(zhí)行任務(wù)

    這篇文章主要介紹了java Timer 定時每天凌晨1點執(zhí)行任務(wù)的代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • Java開發(fā)者結(jié)合Node.js編程入門教程

    Java開發(fā)者結(jié)合Node.js編程入門教程

    這篇文章主要介紹了Java開發(fā)者結(jié)合Node.js編程入門教程,我將先向您展示如何使用Java EE創(chuàng)建一個簡單的Rest服務(wù)來讀取 MongoDB數(shù)據(jù)庫。然后我會用node.js來實現(xiàn)相同的功能,需要的朋友可以參考下
    2014-09-09
  • SpringBoot中@RestControllerAdvice @ExceptionHandler異常統(tǒng)一處理類失效原因分析

    SpringBoot中@RestControllerAdvice @ExceptionHandler異常統(tǒng)一處

    這篇文章主要介紹了SpringBoot中@RestControllerAdvice @ExceptionHandler異常統(tǒng)一處理類失效原因,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評論

蓝田县| 红原县| 丰顺县| 石柱| 灵丘县| 石家庄市| 长岭县| 洛隆县| 资讯 | 承德县| 恭城| 南雄市| 鄂尔多斯市| 北碚区| 浦城县| 永寿县| 柘城县| 离岛区| 东光县| 潜山县| 丰城市| 镇康县| 哈巴河县| 华亭县| 长阳| 南皮县| 苏尼特右旗| 南阳市| 望江县| 通辽市| 方山县| 长武县| 宁明县| 无棣县| 朔州市| 思茅市| 云安县| 绥芬河市| 临潭县| 成武县| 元氏县|