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

首頁 > 學院 > 開發設計 > 正文

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

2019-11-14 23:00:47
字體:
來源:轉載
供稿:網友
信息加密之非對稱加密算法RSA

  前面為大家已經總結了,基于密鑰交換的DH算法,現在就為大家再介紹一種基于因子分解的RSA算法,這種加密算法有兩種實現形式:1、公鑰加密,私鑰解密;2、私鑰加密,公鑰解密。下面就為大家分析一下實現代碼,相對于DH算法,RSA顯得有些簡單。初始化密鑰:

KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");            keyPairGenerator.initialize(512);            KeyPair keyPair = keyPairGenerator.generateKeyPair();            RSAPRivateKey rsaprivateKey = (RSAPrivateKey)keyPair.getPrivate();//私有密鑰            RSAPublicKey rsapublicKey = (RSAPublicKey)keyPair.getPublic();//公有密鑰            System.out.println("privateKey : "+Base64.encodeBase64String(rsaprivateKey.getEncoded()));            System.out.println("publicKey : "+Base64.encodeBase64String(rsapublicKey.getEncoded()));

1、私鑰加密,公鑰解密:

//私鑰加密,公鑰解密--加密            PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(rsaprivateKey.getEncoded());            KeyFactory privateKeyFactory = KeyFactory.getInstance("RSA");            PrivateKey privateKey = privateKeyFactory.generatePrivate(pkcs8EncodedKeySpec);            Cipher privateCipher = Cipher.getInstance("RSA");            privateCipher.init(Cipher.ENCRYPT_MODE, privateKey);            byte[] result = privateCipher.doFinal(src.getBytes());            System.out.println("私鑰加密,公鑰解密--加密:"+Base64.encodeBase64String(result));                        //私鑰加密,公鑰解密--解密            X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(rsapublicKey.getEncoded());            KeyFactory publicKeyFactory = KeyFactory.getInstance("RSA");            PublicKey publicKey = publicKeyFactory.generatePublic(x509EncodedKeySpec);            Cipher publicCipher = Cipher.getInstance("RSA");            publicCipher.init(Cipher.DECRYPT_MODE, publicKey);            result = publicCipher.doFinal(result);            System.out.println("私鑰加密,公鑰解密--解密:"+new String(result));

2、公鑰加密,私鑰解密:

//公鑰加密,私鑰解密---加密            x509EncodedKeySpec = new X509EncodedKeySpec(rsapublicKey.getEncoded());            publicKeyFactory = KeyFactory.getInstance("RSA");            publicKey = publicKeyFactory.generatePublic(x509EncodedKeySpec);            publicCipher = Cipher.getInstance("RSA");            publicCipher.init(Cipher.ENCRYPT_MODE, publicKey);            result = publicCipher.doFinal(src.getBytes());            System.out.println("公鑰加密,私鑰解密---加密:"+Base64.encodeBase64String(result));                        //公鑰加密,私鑰解密---解密            pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(rsaprivateKey.getEncoded());            privateKeyFactory = KeyFactory.getInstance("RSA");            privateKey = privateKeyFactory.generatePrivate(pkcs8EncodedKeySpec);            privateCipher = Cipher.getInstance("RSA");            privateCipher.init(Cipher.DECRYPT_MODE, privateKey);            result = privateCipher.doFinal(result);            System.out.println("公鑰加密,私鑰解密---解密:"+new String(result));

  根據輸出的結果不難發現,公鑰和私鑰并不一致,私鑰的長度要大于公鑰。

  到今天對于信息的加密算法:Base64、對稱加密算法、消息摘要加密算法、非對稱加密算法就全部總結完畢。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 肇源县| 历史| 肇源县| 长宁县| 陇南市| 丰都县| 盐山县| 专栏| 呼和浩特市| 应城市| 浙江省| 巫溪县| 巴彦县| 祁东县| 驻马店市| 大足县| 绿春县| 涪陵区| 星子县| 波密县| 临江市| 马关县| 洪泽县| 渑池县| 南涧| 平陆县| 屯留县| 抚松县| 衡水市| 正宁县| 永福县| 逊克县| 招远市| 准格尔旗| 永清县| 乌兰浩特市| 西乌珠穆沁旗| 金沙县| 绿春县| 简阳市| 西宁市|