亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

請問為什么長度會丟失

public??class?DH?{

????public?static?void?main(String[]?args)throws?Exception{

????????//初始化發送方密鑰----------------------------------------------------------------

????????KeyPairGenerator?keyPairGenerator=KeyPairGenerator.getInstance("DH");

????????keyPairGenerator.initialize(1024);

????????KeyPair?senderKeyPair=keyPairGenerator.generateKeyPair();

????????byte[]?senderPbkEnc=senderKeyPair.getPublic().getEncoded();//得到發送方公鑰的??byte數組形式;>>>>>>>>>>>>>>>>>-傳遞給接受方

?????????

????????//使用發送方密鑰中的參數?初始化接收方的密鑰載體------------------------------------------------

????????KeyFactory?keyFactory=KeyFactory.getInstance("DH");

????????X509EncodedKeySpec?x509EncodedKeySpec=new?X509EncodedKeySpec(senderPbkEnc);?//根據發送方給定的編碼密鑰創建一個符合編碼標準的?X509EncodedKeySpec

?????????

????????PublicKey?publicKey=keyFactory.generatePublic(x509EncodedKeySpec);???//密鑰工廠根據?標準密鑰規范的編碼?生成公鑰

?????????

????????DHParameterSpec?dhParameterSpec=DHPublicKey.class.cast(publicKey).getParams();??//從公鑰中獲取參數?

????????KeyPairGenerator?keyPairGenerator2=KeyPairGenerator.getInstance("DH");

????????keyPairGenerator2.initialize(1024);

????????keyPairGenerator2.initialize(dhParameterSpec);?//利用發送方傳遞的公鑰中獲取的參數?初始化密鑰生成器

????????KeyPair?receiverkeyPair=keyPairGenerator2.generateKeyPair();?//生成秘鑰

?????????

????????PrivateKey?receiverPrivateKey=receiverkeyPair.getPrivate();?//獲得私鑰

????????//獲得公鑰bytes??此公鑰用于傳遞給發送方

????????byte[]?receiverPbkBytes=receiverkeyPair.getPublic().getEncoded();//>>>>>>>>>>>>>>>>>>>>>>傳遞給發送方

?????????

????????//構建接收方密鑰

????????KeyAgreement?keyAgreement=KeyAgreement.getInstance("DH");

????????keyAgreement.init(receiverPrivateKey);

????????keyAgreement.doPhase(publicKey,?true);

????????SecretKey?receiverSecretKey=keyAgreement.generateSecret("DES");?//接收方密鑰構建完成

?????????

????????//構建發送方密鑰---------------------------------------------------------------

????????KeyFactory?keyFactory2=keyFactory.getInstance("DH");

????????X509EncodedKeySpec?x509EncodedKeySpec2=new?X509EncodedKeySpec(receiverPbkBytes);

????????PublicKey?senderPublicKey=keyFactory2.generatePublic(x509EncodedKeySpec2);

????????KeyAgreement?keyAgreement2=KeyAgreement.getInstance("DH");

????????keyAgreement2.init(senderKeyPair.getPrivate());

????????keyAgreement2.doPhase(senderPublicKey,?true);

?????????

????????SecretKey?senderSecretKey?=keyAgreement2.generateSecret("DES");?//發送方密鑰構建完成

?????????

?????????

????????//進行加解密

????????String?str="imooc?security";

????????Cipher?cipher=Cipher.getInstance("DES");

????????cipher.init(Cipher.ENCRYPT_MODE,?senderSecretKey);

????????cipher.update(str.getBytes());

????????byte[]?bs=cipher.doFinal();

????????System.out.println("DH加密后:"+Hex.encodeHexString(bs));

?????????

????????cipher.init(Cipher.DECRYPT_MODE,?receiverSecretKey);

????????System.out.println("解密后:"+new?String(cipher.doFinal(bs)));

?????????

????}

}


正在回答

1 回答

String str="imooc security";

? ? ? ? ? ?Cipher cipher=Cipher.getInstance("DES");

? ? ? ? ? ?cipher.init(Cipher.ENCRYPT_MODE, senderSecretKey);

? ? ? ? ? ?byte[] bs=cipher.doFinal(str.getBytes());



0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

請問為什么長度會丟失

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號