亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

java結合keytool如何實現非對稱加密與解密詳解

2024-07-14 08:41:58
字體:
來源:轉載
供稿:網友

前言

參考:java結合keytool實現非對稱簽名與驗證

那一篇講簽名,這一篇將加密解密。在java安全體系中,簽名屬于JAAS模塊,加解密屬于JCE模塊。

keytool的使用

keytool是JDK自帶的一個密鑰庫管理工具。這里只用到了keytool的部分功能,包括生成密鑰對,導出公鑰等。keytool生成的公鑰/私鑰對存放到一個到了一個文件中,這個文件有密碼保護,通稱為keystore。

生成密鑰對

$ keytool -genkey -alias signLegal -keystore examplestanstore2 -validity 1800 -keyalg RSA

生成別名為signLegal的密鑰對,存放在密鑰庫examplestanstore2中,證書的有效期是1800天(默認是90天)。

輸入一系列的參數。輸入的參數遵循了LDAP的風格和標準??梢韵胂螅傻拿荑€對可以看成LDAP的一個條目。

命令執行成功后會在當前目錄下創建一個叫examplestanstore2的文件。相對另一篇博文,增加了一個keyalg參數。因為keytool默認算法是DSA,而DSA只能用于簽名。RSA既能用于簽名,也能用于加密。而本文是研究加密問題,只能用RSA算法。

查看密鑰對

$ keytool -list -keystore examplestanstore2 -v

列出了examplestanstore2密鑰庫的中所有密鑰對。-v參數表示詳細信息,詳細信息中有證書的失效時間。

導出公鑰證書

$ keytool -export -keystore examplestanstore2 -alias signLegal -file StanSmith.crt -rfc

導出的公鑰存放在當前目錄的StanSmith.crt文件中。講“簽名”的那篇博文沒有加-rfc參數,導出是個二進制文件(CER格式)。

加上-rfc后,導出的是文本文件(PEM)格式。在下面的測試中,如果使用CER格式,會報錯 ` No installed provider supports this key: sun.security.provider.DSAPublicKeyImpl`。

java加密和解密

參考了這篇文章。 

在java程序中,首先從密鑰庫取出私鑰和公鑰,然后對測試字符串進行加密。二進制的密文轉換成字符串輸出到屏幕,然后解密成明文再輸出到屏幕。

GenSig2.java

import java.io.*;import java.security.KeyStore;import java.security.PrivateKey;import java.security.PublicKey;import javax.crypto.Cipher;import sun.security.provider.*;public class RSAEntry { public static void main(String[] args) { try { //1.從密鑰庫中取私鑰 KeyStore ks = KeyStore.getInstance("JKS"); FileInputStream ksfis = new FileInputStream("examplestanstore2"); BufferedInputStream ksbufin = new BufferedInputStream(ksfis); // open keystore and get private key // alias is 'signLeal', kpasswd/spasswd is 'vagrant' ks.load(ksbufin, "vagrant".toCharArray()); PrivateKey prikey = (PrivateKey) ks.getKey("signLegal", "vagrant".toCharArray()); //2.根據命令行參數取公鑰 FileInputStream certfis = new FileInputStream(args[0]); java.security.cert.CertificateFactory cf =  java.security.cert.CertificateFactory.getInstance("X.509"); java.security.cert.Certificate cert = cf.generateCertificate(certfis); PublicKey pubKey = cert.getPublicKey(); //3.使用公鑰進行加密 String data = "測試數據"; //構建加密解密類 Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE, pubKey);//設置為加密模式 byte[] jmdata = cipher.doFinal(data.getBytes()); //打印加密后數據 System.out.println(bytesToHexString(jmdata)); //改為解密模式進行解密 cipher.init(Cipher.DECRYPT_MODE, prikey);//會用私鑰解密 jmdata = cipher.doFinal(jmdata); System.out.println(new String(jmdata)); }catch (Exception e) {  e.printStackTrace(); } } //這個方法用于把二進制轉換成ASCII字符串。 public static String bytesToHexString(byte[] bytes) { if (bytes == null)  return "null!"; int len = bytes.length; StringBuilder ret = new StringBuilder(2 * len); for (int i = 0; i < len; ++i) {  int b = 0xF & bytes[(i)] >> 4;  ret.append("0123456789abcdef".charAt(b));  b = 0xF & bytes[(i)];  ret.append("0123456789abcdef".charAt(b)); } return ret.toString(); }}

編譯,并運行:

$ javac RSAEntry.java$ java RSAEntry StanSmith.crt8fceea48e34fdc786bde05459f3366714b650ff04f4e81e52eca139d8ee0b4acbcad019cd496de3589765894b2d5f4a2af38914af614d9e9b73e551ae01830cd6f49505685d7e527e3adc2b7a2a75608068627c0a12b338d3c743a5de2af2de327a0de14b548604e5c8905747aef077852ecfd2eb4a134ca0f3a56b23db8ae4beb07add5ba3725ab3ee0ffa7481494856144ba5004a329cfe2c43078f0cd95aebcbbfc6c1894efafacac90615e549cb8432c125d912a5e54ce4884f633f3e96bd7b61c1d538e38713716367f7ec6f5ca01288e6d96ad9e3d6515147369144390e1d002b1beaf5797966e3b498cc7def754816c99456ef380b3a83366a44415f6測試數據

本文展示的算法是一種非對稱算法,計算較慢。在SSL中,非對稱算法用于客戶端和服務器之間交換對稱加密的一次性密鑰??蛻舳藢⒁粋€隨機數用服務器的公鑰加密發給服務器,如果服務器持有私鑰,就能解開密文獲得隨機數(這個隨機數就是對稱算法的密鑰)。有了對稱算法密鑰,雙方就可以用對稱加密進行安全通信了。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲成人久久久久| 91精品综合视频| 久久国产精品99国产精| 亚洲欧洲日产国码av系列天堂| 国外成人在线播放| 日韩最新中文字幕电影免费看| 国产精品扒开腿做爽爽爽视频| 狠狠色狠狠色综合日日小说| 亚洲人成电影网| 国产精品第10页| 欧美日本亚洲视频| 亚洲精品视频在线观看视频| 国产亚洲aⅴaaaaaa毛片| 中文字幕亚洲色图| 在线精品高清中文字幕| 国产精品视频xxx| 色综合伊人色综合网| 欧美黑人xxxx| 国产精品综合不卡av| 欧美激情在线有限公司| 精品久久久国产| 色狠狠久久aa北条麻妃| 热99精品只有里视频精品| 欧美在线xxx| 色综合影院在线| 一区二区三区四区在线观看视频| 日韩av最新在线| 伊人久久免费视频| 国产偷亚洲偷欧美偷精品| 中文字幕欧美日韩va免费视频| 久久精品电影一区二区| 午夜精品久久17c| 亚洲自拍偷拍一区| 亚洲理论电影网| 亚洲最新av在线网站| 日韩精品欧美国产精品忘忧草| 欧美视频一二三| 91av网站在线播放| 91精品国产91久久久久久不卡| 日韩av在线免费播放| 欧美午夜精品久久久久久久| 亚洲在线视频福利| 日韩av网址在线观看| 国产亚洲精品日韩| 久久亚洲电影天堂| 欧美日本啪啪无遮挡网站| 国产精品av网站| 久久精品国产亚洲一区二区| 欧美精品在线视频观看| 日韩在线中文字幕| 久久久久久噜噜噜久久久精品| 久久中国妇女中文字幕| 91黑丝在线观看| 亚洲天堂第二页| 日韩国产高清视频在线| 国产日韩欧美中文| 成人欧美一区二区三区黑人| 久久久精品一区| 日韩av在线免费观看一区| 亚洲va电影大全| 国产精品一区二区av影院萌芽| 久久精品亚洲精品| 亚洲午夜未删减在线观看| 亚洲美女中文字幕| 日韩最新中文字幕电影免费看| 日韩中文字幕精品视频| 国产+成+人+亚洲欧洲| 色偷偷偷亚洲综合网另类| 欧美自拍视频在线观看| 色综合久久天天综线观看| 国产成人综合亚洲| 日韩在线免费视频| 国产婷婷色综合av蜜臀av| 一区国产精品视频| 久久人人97超碰精品888| 日韩极品精品视频免费观看| 久久久免费av| 欧美大尺度激情区在线播放| 亚洲欧美制服中文字幕| 国产精品欧美风情| 日本一区二区在线免费播放| 欧美精品手机在线| 欧美亚洲视频在线看网址| 成人激情视频在线观看| 欧美激情视频在线观看| 中文欧美日本在线资源| 亚洲欧美日韩高清| 亚洲人精品午夜在线观看| 亚洲第一福利在线观看| 一本久久综合亚洲鲁鲁| 国产噜噜噜噜噜久久久久久久久| 国自产精品手机在线观看视频| 欧美午夜www高清视频| 红桃视频成人在线观看| 97色在线观看免费视频| 国产激情视频一区| 久久高清视频免费| 国产视频精品在线| 欧美精品久久一区二区| 亚洲国产中文字幕在线观看| 成人淫片在线看| 国产精品美女www爽爽爽视频| 久久久久久久电影一区| 精品自在线视频| 欧洲日本亚洲国产区| 久久久免费av| 国产亚洲一区二区精品| 日韩人体视频一二区| 亚洲国产精品一区二区久| 欧美国产日韩在线| 国产精品免费看久久久香蕉| 亚洲国产成人在线播放| 亚洲片在线资源| 久久久亚洲国产| 久久久久久这里只有精品| 91在线|亚洲| 国产日韩在线亚洲字幕中文| 国产精品视频一区二区三区四| 中文国产亚洲喷潮| 亚洲娇小xxxx欧美娇小| 亚洲高清久久网| 精品福利视频导航| 在线观看亚洲视频| 最近2019中文字幕一页二页| 亚洲男人的天堂在线| 久久亚洲精品小早川怜子66| 91久久精品美女| 国产91对白在线播放| 欧美日韩综合视频| 日韩av最新在线观看| 国产主播精品在线| 日韩电影视频免费| 国语对白做受69| 深夜福利亚洲导航| 亚洲最大的成人网| 国产精品亚洲自拍| 亚洲天堂日韩电影| 色av吧综合网| 狠狠色香婷婷久久亚洲精品| 国产网站欧美日韩免费精品在线观看| www.久久草.com| 81精品国产乱码久久久久久| 毛片精品免费在线观看| 国产一区二区在线播放| 日本欧美精品在线| 国产精品国模在线| 神马国产精品影院av| 九九久久综合网站| 日韩av不卡电影| 欧美高清videos高潮hd| 日本19禁啪啪免费观看www| 精品国产一区二区三区久久狼5月| 国产亚洲精品91在线| 国产精品成人va在线观看| 成人免费视频网| 日韩在线中文字| 久久精品电影网| 在线成人激情视频| 国产91久久婷婷一区二区| 在线精品91av| 亚洲片国产一区一级在线观看| 岛国av一区二区| 久久av在线播放| xx视频.9999.com|