亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ssl_with_signature.java

?? 身份認證和數字簽名在實際應用中是通過以數字證書為核心的公開密鑰基礎結構(PKI)來實現的
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
/****************************************************************
* 軟件:Java簽名協議擴展 (Java Signature Protocol Extension, JSPE)
* 版本:V1.0
* 軟件功能:實現SSL簽名協議
* 模塊: 私有類ProtocolVersion
*       私有類SSLSignatureType
*       私有類Signature_Alert_type
*       公共類SSL_with_signature
*       私有類SSLsignature_reply
*-----------------------------------------------------------------
*                                 版權所有:中山大學軟件研究所 2002
*                          Programmed by 佛山張峰嶺 fszfl@21cn.com
*                                              2002.4 - 2002.5
*****************************************************************/
package com.zsusoft.zfl;
import java.util.*;
import java.security.*;
import java.security.KeyStore;
import java.net.*;
import javax.net.*;
import javax.net.ssl.*;   
//import com.sun.net.ssl.*;
import java.io.*;
import java.lang.*;
/**
*  SSL_with_signature類的私有類,定義SSL簽名協議版本號。
**/
class ProtocolVersion{
   /**
   *  主版本號 
   **/
   public static final byte major=1;
   /**
   *  次版本號 
   **/
   public static final byte minor=0;
}
/**
* SSL_with_signature類的私有類,定義SSL簽名協議中的消息類型。
**/
class SSLSignatureType{
   /**
   *   簽名請求 
   **/
   public static final byte signature_request=1;
   /**
   *   簽名響應 
   **/
   public static final byte signature_reply=2;
   /**
   *   簽名警告 
   **/
   public static final byte signature_alert=3;
}
/**
* SSL_with_signature類的私有類,定義SSL簽名協議中的警告類型。
**/
class Signature_Alert_type{
   /**
   *  簽名值無法通過校驗,可能是非法或損壞的簽名值
   **/
   public static final byte Illegal_Signature=1;  
   /**
   * 簽名響應方拒絕簽名
   **/
   public static final byte Reject_To_Signature=2;  
   /**
   *  非法隨機數
   **/
   public static final byte Illegal_random=3;    
   /**
   * 沒有簽名能力,簽名響應方可能沒有具備簽名能力的私人數字證書
   **/
   public static final byte No_signature_ability=4;
   /**
   * 系統內部故障
   **/  
   public static final byte System_interal_error=5;
   /**
   *  用戶自定義的警告類型
   **/ 
   public static final byte User_define_alert=6;  
   /**
   * 消息格式錯誤
   **/
   public static final byte Format_error=7;       
}
/**********
* 使用用戶指定的私鑰庫和證書庫初始化SSL會話;
* 實現了Unix Socket API格式的通信調用方法;
* 通過創建簽名回應對象(SSLsignature_reply)啟動對簽名請求的監聽;
* 提供簽名請求功能調用方法;
* 提供一些如字符串輸入,記日志文件之類的功能調用方法。
* 類中的main方法實現了SSL簽名協議功能的演示和調試。
**********/
public class SSL_with_signature {
   //可以公共訪問的成員
   /**
   *  自己的證書
   **/
   public java.security.cert.X509Certificate my_certificate;  
   //private javax.security.cert.Certificate my_certificate;  
   // 注:javax.security.cert.Certificate 是JSSE中,專用于SSL
   //    java.security.cert.Certificate  是Java自帶的,不知為什么兩者不兼容
   //    X509Certificate 是Certificate的子類
   /**
   *  用于創建服務器Socket
   **/
   public SSLServerSocketFactory ssf= null;
   /**
   * 用于創建客戶機Socket
   **/   
   public SSLSocketFactory sf= null;
   /**
   * SSL版本,來自SSLContext.getProtocol()
   **/     
   public String SSL_version = null;
   //public static final String BYTE_ENCODING ="8859_1";    //傳送信息時的編碼方式
   /**
   * 傳送信息時的編碼方式
   **/
   public static final String BYTE_ENCODING ="GBK";    
   //public static final String BYTE_ENCODING ="ASCII7";    //傳送信息時的編碼方式
   /**
   * 本人證書中的Suject Distinguished Name
   **/
   public String my_SubjectDN = "";
   /**
   *  調用Message_Box.inputString()顯示輸入窗口并提示用戶輸入信息
   **/                  
   public static Message_Box message_box = new Message_Box();  
   
   //私有成員,不能被公開訪問
   /**
   * 簽名響應方監聽對方連接的端口常數定義
   **/            
   private static final int SSLsignature_listen_port=9008;  
   private static boolean debug_mode = false;           //調試模式
   /**
   *  這個對象用獨立的線程監聽請求簽名的連接
   **/
   private SSLsignature_reply sslsignature_reply=null;  
   private PrivateKey my_privatekey;  //自己的私鑰
   private SSLSignature_Log Log_Object=null;                //用于記錄日志   
   /**************
   *   構造函數的作用:
   *   1 裝置自己的私鑰庫和對方的信任證書庫
   *   2 生成可以創建SSL socket的socket 工廠
   *   參數說明: 
   *   my_keystore存放自己的私鑰
   *   alias:密鑰證書庫中的alias名,缺省為mykey(JKS的缺省)
   *   my_password為訪問私鑰的密碼
   *   cert_keystore存放信任的證書
   *   LogFileName為保存記錄日志的文件名
   **/
   public SSL_with_signature(KeyStore my_keystore,String alias,String my_password,KeyStore cert_keystore,String LogFileName)
    throws Exception
   {
    //final String ALIASNAME ="mykey";                //密鑰證書庫中的alias名,缺省為mykey(JKS的缺省)
        try {  
    	/*本段代碼用于產生SSL socket工廠*/
    	// kmf 為SSL使用的本方私鑰和證書
    	// tmf 為SSL使用對方證書 ,注意 tmf 中可以保存很多證書,也就是一個SSL_with_signature對象可以同時與許多其他機器聯系
    	// sf 為 SSL client 的socket factory
    	// ssf 為  SSL server 的 serversocke factory
    		Security.addProvider(new com.sun.rsajca.Provider());
   		Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
   	        if(debug_mode){
   			Show_Debug_Message("以下是Java安全平臺SSL提供商的資料:");
   			ListProviderInfo(new com.sun.rsajca.Provider());
   	        	ListProviderInfo(new com.sun.net.ssl.internal.ssl.Provider());
   		}	
		TrustManagerFactory tmf;
		KeyManagerFactory kmf;
		SSLContext sslContext = null;
		sslContext = SSLContext.getInstance("TLS");
		SSL_version = sslContext.getProtocol();
		tmf=TrustManagerFactory.getInstance("SunX509");
		kmf = KeyManagerFactory.getInstance("SunX509");
		kmf.init(my_keystore, my_password.toCharArray());
		tmf.init(cert_keystore);
		//使用隨機數加強加密強度
		SecureRandom srand=SecureRandom.getInstance("SHA1PRNG","SUN");
		srand.setSeed((new Date()).getTime());
		sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), srand);
		sf = sslContext.getSocketFactory();
		ssf = sslContext.getServerSocketFactory();
		if(my_keystore.isKeyEntry(alias) == false)  //不是保存私鑰 
		      throw new KeyStoreException(alias+" entry is not a key entry"); 		 
        /*取自己的私鑰*/
     	        my_privatekey=(PrivateKey)my_keystore.getKey(alias,my_password.toCharArray());    //裝入自己私鑰
     	/*取自己的證書和Subject distinguished name*/
     	        my_certificate=(java.security.cert.X509Certificate)my_keystore.getCertificate(alias);
     	        my_certificate.checkValidity();  //檢查證書是否仍然有效
     	        my_SubjectDN=my_certificate.getSubjectDN().getName();        
        /*設置日志對象*/
                if(LogFileName == null)
                {
                 int begin=my_SubjectDN.indexOf("CN=");    //定位CN域頭
                 int end=my_SubjectDN.indexOf(",",begin);  //定位CN域尾
                 String my_SubjectDN_CN = null;
                 if(end<0){
                   my_SubjectDN_CN=my_SubjectDN.substring(begin+3);
                 }
                 else{
                   my_SubjectDN_CN=my_SubjectDN.substring(begin+3,end);
                 }
                 Log_Object=new SSLSignature_Log(my_SubjectDN_CN+"_signature.log");  //缺省使用Subject Distinguish name中的CN字段
                }
                else
                 Log_Object=new SSLSignature_Log(LogFileName);
	 } catch (Exception e) {
	 	System.err.println("無法創建SSL_with_signature對象: " +
	           e.getMessage());
	        e.printStackTrace();
	        throw e;
	        //System.exit(-1);
	 }     	
   }
   /*
   *    顯示Java安全方案SSL提供商提供的Java安全類信息
   **/
   private static void ListProviderInfo(java.security.Provider p){
   	Show_Debug_Message("---------------Provider name:"+p.getName()+"-------------------");
   	Show_Debug_Message("Provider version:"+p.getVersion());
   	Show_Debug_Message("Provider information:"+p.getInfo());
   }
   /**
   *  顯示我的證書信息
   **/
   public void Show_My_Certificate()
   {
   	Show_Message("個人證書信息:");
   	Show_Message(my_certificate.toString());
   }
   /**
   *  顯示SSL的信息
   **/
   public void Show_SSL_information()
   {
   	Show_Message("SSL的信息:");
   	Show_Message("版本:"+SSL_version);
   	String[] supportedCipherSuites = sf.getSupportedCipherSuites();
   	Show_Message("支持的加密算法為:");
   	for(int i=0;i<supportedCipherSuites.length;++i)Show_Message(supportedCipherSuites[i]);
   	String[] defaultCipherSuites=sf.getDefaultCipherSuites();
   	Show_Message("缺省的加密算法為:");
   	for(int i=0;i<defaultCipherSuites.length;++i)Show_Message(defaultCipherSuites[i]);
   }
   /**
   *  獲取SSL會話的信息
   *  socket: 使用的socket
   *  返回SSL會話的信息
   **/
   public static String getSSLsessionMessage(Socket socket)
   {
   	String SSLMessage = null;
		   try{
		        SSLSession sslsession = ((SSLSocket)socket).getSession();  //SSL會話
		        SSLMessage = "SSL Session id :" + sslsession.toString() + "\r\n";
		        SSLMessage += " 對方主機:" + sslsession.getPeerHost() + "\r\n";  //獲取對方的主機名
	 		try{
	 		   javax.security.cert.Certificate partner_cert=(javax.security.cert.Certificate)(sslsession.getPeerCertificateChain()[0]);  //對方的證書
	 		   SSLMessage += " 對方證書:\r\n";
	 	           SSLMessage += partner_cert.toString()+"\r\n";
	 		} catch (Exception ie) {
	 			SSLMessage += " 對方沒有證書!\r\n";
	 		}
	 		SSLMessage += "SSL會話使用的加密算法:"+ sslsession.getCipherSuite() + "\r\n";
	 		SSLMessage += "SSL會話創建的時間:"+ (new Date(sslsession.getCreationTime())).toString() +"\r\n";
	 		SSLMessage += "SSL會話最近使用的時間:"+ (new Date(sslsession.getLastAccessedTime())).toString() +"\r\n";
	 		SSLMessage += "SSL會話綁定的對象:";
	 		String ObjectName[] = sslsession.getValueNames();
	 		for(int i=0;i<ObjectName.length;i++)SSLMessage += ObjectName[0]+" ";
	 		SSLMessage += "\r\n";
		   } catch (Exception e){
			SSLMessage = "無法獲取SSL信息,可能不是使用SSL連接\r\n";
			SSLMessage += "出錯原因:"+e.getMessage()+"\r\n";
		   }
		   return SSLMessage;
   }
   /**
    *   創建ServerSocket,在指定端口監聽SSL連接
    *   參數說明:
    *   listen_port為監聽連接的端口
    *   調用返回服務器Socket
    **/
   public ServerSocket listen(int listen_port)
   {
   	try {
   	    //通訊使用SSL加密
   	  ServerSocket ss = ssf.createServerSocket(listen_port);
	  ((SSLServerSocket)ss).setNeedClientAuth(true);    //需要認證對方
	  return ss;
	} catch (IOException e) {
	    System.err.println("無法創建服務器Socket,原因: " +
			       e.getMessage());
	    e.printStackTrace();
	  return null;   
	}
   }
   /**
   *   通過SSL的socket發送數據,本方法也通用于TCP socket
   *   參數說明:
   *   s:使用的socket
   *   but:緩沖區
   *   length:發送字節長度
   *   返回實際發送長度
   *   -1 表示出錯

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91视频在线观看| 视频一区二区国产| 成人小视频免费在线观看| 久久久亚洲午夜电影| 成人一级片网址| 亚洲欧洲日产国产综合网| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 成人aaaa免费全部观看| 国产欧美日韩麻豆91| 99久久综合精品| 亚洲主播在线播放| 欧美一区二区三区四区高清| 久久成人av少妇免费| 国产片一区二区| 欧美亚洲禁片免费| 国内精品国产成人| 国产精品久久影院| 欧美日韩情趣电影| 国内成+人亚洲+欧美+综合在线 | 97se亚洲国产综合自在线| 亚洲综合一二区| 日韩欧美国产一区二区三区| 高清成人免费视频| 亚洲精品ww久久久久久p站| 欧美精品xxxxbbbb| 国产一区二区视频在线| 亚洲柠檬福利资源导航| 777奇米四色成人影色区| 国产麻豆精品在线观看| 亚洲视频一区二区免费在线观看| 欧美群妇大交群中文字幕| 国产一区二区免费看| 亚洲伦在线观看| 日韩精品中文字幕一区| 91久久精品网| 国产精品一二三| 婷婷综合另类小说色区| 国产日韩一级二级三级| 欧美巨大另类极品videosbest| 国产精品亚洲第一区在线暖暖韩国 | 欧美一级片在线| 91浏览器入口在线观看| 精品在线播放午夜| 一区二区久久久| 久久精品人人爽人人爽| 在线免费精品视频| 高清国产午夜精品久久久久久| 婷婷国产v国产偷v亚洲高清| 中文字幕一区av| 久久久久97国产精华液好用吗| 欧美日本韩国一区二区三区视频| 成人av免费在线观看| 久久99国产精品免费网站| 一区二区三区蜜桃| 一区在线播放视频| 国产女人aaa级久久久级| 日韩欧美一区二区三区在线| 欧美丝袜丝交足nylons图片| 成人av在线电影| 国产精品2024| 国产乱子伦一区二区三区国色天香| 亚洲午夜精品在线| 一区二区三区日韩在线观看| 国产精品久久久久国产精品日日| 久久久久青草大香线综合精品| 欧美一区二区视频在线观看 | jlzzjlzz国产精品久久| 国产精品一卡二卡在线观看| 老司机精品视频在线| 日韩激情一二三区| 亚洲午夜激情av| 亚洲综合在线电影| 亚洲尤物视频在线| 亚洲午夜三级在线| 亚洲一级电影视频| 亚洲国产日韩一级| 午夜伦理一区二区| 天天色天天操综合| 日韩中文欧美在线| 日本成人在线视频网站| 午夜激情综合网| 日韩—二三区免费观看av| 日韩精品一级中文字幕精品视频免费观看| 夜夜精品浪潮av一区二区三区| 亚洲乱码国产乱码精品精的特点 | 国产亚洲自拍一区| 欧美国产精品劲爆| 中文字幕制服丝袜一区二区三区| 国产精品你懂的在线| 亚洲欧美自拍偷拍| 亚洲人成在线观看一区二区| 一区二区三区高清不卡| 图片区小说区国产精品视频| 免费亚洲电影在线| 国产一区二区三区高清播放| 成人av小说网| 欧美主播一区二区三区美女| 欧美人xxxx| 国产欧美日本一区视频| 日韩理论片在线| 午夜不卡av免费| 国产乱码字幕精品高清av| 欧美午夜精品理论片a级按摩| 欧美中文字幕一二三区视频| 91精品国产综合久久久久| 久久久久久久电影| 亚洲视频在线一区观看| 日产欧产美韩系列久久99| 国产美女主播视频一区| www.色综合.com| 在线观看欧美日本| 久久综合久久综合久久综合| 国产精品第四页| 丝瓜av网站精品一区二区| 国产综合久久久久久久久久久久| av电影在线观看完整版一区二区| 欧美日韩一区二区三区四区五区| 欧美精品一区二区三区蜜臀| 中文字幕制服丝袜成人av| 日韩av高清在线观看| 成人教育av在线| 777亚洲妇女| 亚洲人成精品久久久久| 九色综合狠狠综合久久| 在线亚洲一区二区| 久久先锋影音av鲁色资源网| 一区二区成人在线| 福利一区在线观看| 欧美精品久久一区| 中文字幕亚洲在| 韩国在线一区二区| 欧美性生活久久| 国产精品女同一区二区三区| 蜜臀a∨国产成人精品| 色综合中文字幕国产| 91精品国产全国免费观看| 中文字幕一区二区三区在线不卡 | 成人激情免费视频| 精品国产区一区| 天天操天天综合网| 91丨九色丨蝌蚪富婆spa| 26uuu久久天堂性欧美| 视频一区视频二区中文字幕| 99精品视频一区二区三区| 欧美不卡一区二区三区| 婷婷国产在线综合| 精品视频在线看| 亚洲欧洲国产日韩| 成人免费视频视频在线观看免费 | 欧美日韩一区 二区 三区 久久精品| 久久精品亚洲一区二区三区浴池| 日韩中文字幕不卡| 欧美日韩精品免费观看视频| 亚洲天堂2014| 91天堂素人约啪| 国产精品色婷婷| 国产91丝袜在线观看| 精品国产乱码久久久久久老虎 | 国产精品久久久久久久久晋中 | 免费观看久久久4p| 欧美疯狂性受xxxxx喷水图片| 亚洲免费观看高清| 99vv1com这只有精品| 中文字幕欧美激情| 成人高清免费观看| 国产精品久久久久久一区二区三区 | 成人激情综合网站| 国产精品久久久久久亚洲伦| 成人午夜短视频| 国产精品美女一区二区三区| 懂色av噜噜一区二区三区av| 国产欧美日韩激情| 99天天综合性| 一区二区三区蜜桃| 欧美日韩1234| 精品一区二区在线播放| 2022国产精品视频| 国产成人一区在线| 国产精品国产馆在线真实露脸| 99精品国产视频| 亚洲一级片在线观看| 91精品欧美久久久久久动漫 | 亚洲一区二区三区四区的| 欧美婷婷六月丁香综合色| 午夜av区久久| 欧美精品一区二区三区在线| 国产黄色91视频| 《视频一区视频二区| 欧美中文字幕不卡| 激情综合网天天干| 欧美国产精品久久| 欧美在线观看视频一区二区三区| 五月婷婷另类国产| 欧美精品一区二区在线播放| 成人国产精品视频| 偷拍与自拍一区| 国产亚洲成aⅴ人片在线观看| 一本大道久久a久久综合婷婷| 亚洲国产精品影院| 久久一夜天堂av一区二区三区|