国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

信息加密之非對稱加密DH算法

2019-11-14 23:00:39
字體:
供稿:網(wǎng)友
信息加密之非對稱加密DH算法

  非對稱加密算法是相對于對稱加密算法來說的,對于對稱加密算法請查閱之前的總結(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é)完畢了。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 抚州市| 海阳市| 遵义县| 台南县| 繁峙县| 太湖县| 凤阳县| 平泉县| 盘山县| 乌拉特前旗| 隆化县| 广州市| 阿坝县| 东阿县| 乌恰县| 曲阜市| 邵阳市| 延长县| 通化县| 阿鲁科尔沁旗| 彰化市| 团风县| 卢龙县| 时尚| 锦州市| 平顶山市| 白朗县| 五寨县| 达尔| 华宁县| 成都市| 乐至县| 铅山县| 明水县| 中西区| 鹰潭市| 揭阳市| 灵武市| 和田市| 沐川县| 双流县|