久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Java DES,DESede,Blowfish非對稱加密實現(xiàn)

 yespon 2017-04-05

Java非對稱加密,,加密算法可以選擇DES,DESede,Blowfish等,,以張三、李四為例,,介紹加密算法的傳遞,。先產(chǎn)生張三的密鑰對(keyPairZhang),張三生成公鑰(publicKeyZhang)并發(fā)送給李四(公鑰的數(shù)組字節(jié)),,通過網(wǎng)絡(luò)或磁盤等方式,把公鑰編碼傳送給李四,,李四接收到張三編碼后的公鑰,將其解碼,得到KeyFactory對象,將公鑰的KeySpec對象轉(zhuǎn)換為公鑰,,李四用張三的公鑰加密信息,,并發(fā)送給李四,張三用自己的私鑰解密從李四處收到的信息等,,來看一張圖,,或許可以幫助你理解。

以下為JAVA非對稱加密,、解密完整代碼:

01import java.security.*;
02import java.security.spec.*;
03import javax.crypto.*;
04public class PairKeyExample {
05    public static void main(String argv[]) {
06        try {
07            String algorithm = "RSA"//定義加密算法,可用 DES,DESede,Blowfish
08            String message = "張三,,你好,我是李四";
09            //產(chǎn)生張三的密鑰對(keyPairZhang)
10            KeyPairGenerator keyGeneratorZhang =
11                KeyPairGenerator.getInstance(algorithm);  //指定采用的算法
12            keyGeneratorZhang.initialize(1024); //指定密鑰長度為1024位
13            KeyPair keyPairZhang = keyGeneratorZhang.generateKeyPair(); //產(chǎn)生密鑰對
14            System.out.println("生成張三的公鑰對");
15            // 張三生成公鑰(publicKeyZhang)并發(fā)送給李四,這里發(fā)送的是公鑰的數(shù)組字節(jié)
16            byte[] publicKeyZhangEncode = keyPairZhang.getPublic().getEncoded();
17            //通過網(wǎng)絡(luò)或磁盤等方式,把公鑰編碼傳送給李四
18            //李四接收到張三編碼后的公鑰,將其解碼
19            KeyFactory keyFacoryLi = KeyFactory.getInstance(algorithm);  //得到KeyFactory對象
20            X509EncodedKeySpec x509KeySpec =
21                new X509EncodedKeySpec(publicKeyZhangEncode);  //公鑰采用X.509編碼
22            PublicKey publicKeyZhang = keyFacoryLi.generatePublic(x509KeySpec); //將公鑰的KeySpec對象轉(zhuǎn)換為公鑰
23            System.out.println("李四成功解碼,得到張三的公鑰");
24            //李四用張三的公鑰加密信息,,并發(fā)送給李四
25            Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");  //得到Cipher對象
26            cipher.init(Cipher.ENCRYPT_MODE, publicKeyZhang);  //用張三的公鑰初始化Cipher對象
27            byte[] cipherMessage = cipher.doFinal(message.getBytes());  //得到加密信息
28            System.out.println("加密后信息:" new String(cipherMessage));
29            System.out.println("加密完成,,發(fā)送給李四...");
30            //張三用自己的私鑰解密從李四處收到的信息
31            cipher.init(Cipher.DECRYPT_MODE, keyPairZhang.getPrivate()); //張三用其私鑰初始化Cipher對象
32            byte[] originalMessage = cipher.doFinal(cipherMessage);  //得到解密后信息
33            System.out.println("張三收到信息,解密后為:" new String(originalMessage));
34        catch (Exception ex) {
35            ex.printStackTrace();
36        }
37    }
38}

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多