亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
欧美日韩不卡在线| 天天操天天色综合| 国产精品综合一区二区三区| 日韩欧美一区二区不卡| 九色|91porny| 国产午夜亚洲精品午夜鲁丝片| 精品一区二区精品| 久久久国产精华| 97精品视频在线观看自产线路二| 亚洲黄色av一区| 欧美影院一区二区| 狠狠网亚洲精品| 久久精品人人做人人综合| 91在线观看免费视频| 一区二区成人在线视频 | 美女诱惑一区二区| 欧美—级在线免费片| 欧美中文字幕一二三区视频| 青草av.久久免费一区| 91精品国产综合久久婷婷香蕉| 久久成人av少妇免费| 欧美大片在线观看一区二区| 日本不卡一区二区三区高清视频| 国产日韩精品视频一区| 色视频一区二区| 极品少妇xxxx精品少妇偷拍| 亚洲丝袜美腿综合| 日韩欧美在线影院| 白白色 亚洲乱淫| 美女视频黄 久久| 亚洲欧美一区二区三区久本道91| 欧美一区二区性放荡片| 99久免费精品视频在线观看| 美女一区二区三区| 亚洲免费伊人电影| 精品国产一区a| 欧美日韩精品福利| 成人午夜精品一区二区三区| 日韩精品久久久久久| 国产精品不卡在线| 日韩视频在线你懂得| 在线视频国内自拍亚洲视频| 国产精品66部| 久久精品99国产精品| 一区二区三区美女| 国产在线视频不卡二| 日韩三级高清在线| 欧洲视频一区二区| 福利视频网站一区二区三区| 婷婷国产在线综合| 亚洲激情一二三区| 综合自拍亚洲综合图不卡区| 欧美成人精品1314www| 一本到不卡精品视频在线观看| 国内外成人在线| 日韩激情在线观看| 香港成人在线视频| 一区二区高清在线| 国产精品女主播在线观看| 久久免费看少妇高潮| 精品国产91久久久久久久妲己| 欧美日韩国产精品自在自线| 色婷婷精品久久二区二区蜜臂av| 成人黄页毛片网站| 国产伦精品一区二区三区视频青涩 | 国内精品伊人久久久久影院对白| 日韩精品每日更新| 天天综合色天天| 亚洲va欧美va天堂v国产综合| 亚洲精品成人悠悠色影视| 中文字幕一区二区三区在线播放 | 国产精品不卡视频| 国产人久久人人人人爽| 久久精品欧美一区二区三区不卡 | 亚洲欧洲综合另类| 成人免费在线播放视频| 中文字幕一区二区日韩精品绯色| 久久久精品综合| 日韩你懂的在线观看| 成人一区二区三区视频在线观看| 国产福利91精品一区| 久久精品国产精品亚洲精品| 中文字幕一区二区三区精华液| 69堂成人精品免费视频| 99久久精品国产网站| 国产美女久久久久| 国产精品伊人色| 国产精品自拍三区| 国产99一区视频免费| www.99精品| 91极品视觉盛宴| 欧美另类z0zxhd电影| 欧美日韩高清一区二区不卡| 日韩亚洲欧美综合| 精品国产一区二区三区av性色| 日韩三级免费观看| 国产午夜一区二区三区| 国产精品免费看片| 亚洲日本乱码在线观看| 亚洲综合一区二区三区| 日韩精品一级二级| 久久成人久久鬼色| 国产成人精品免费看| 色婷婷综合激情| 欧美一区二视频| 国产精品污www在线观看| 亚洲女人****多毛耸耸8| 亚洲18影院在线观看| 国产另类ts人妖一区二区| 波多野结衣中文一区| 欧美精品一级二级| 国产日韩欧美电影| 亚洲成在人线在线播放| 国产精品一二三四五| 日本丶国产丶欧美色综合| 精品欧美一区二区在线观看| 午夜激情综合网| 国产激情一区二区三区| 欧美视频一区二区三区四区| 久久久久久久综合狠狠综合| 亚洲另类在线视频| 国产在线一区观看| 欧美视频完全免费看| 久久精品视频一区二区三区| 一区二区在线观看视频在线观看| 精品一区二区av| 91成人免费在线| 国产精品私人自拍| 久久精品99国产精品| 欧美在线观看一区二区| 国产蜜臀97一区二区三区| 视频一区视频二区中文| 99视频精品免费视频| 日韩精品一区二区三区在线| 亚洲欧美在线高清| 极品美女销魂一区二区三区| 精品视频在线视频| 国产精品久久久久影院| 国产原创一区二区| 欧美一区二区三区四区高清 | 午夜私人影院久久久久| 成人一级片在线观看| 欧美一级二级在线观看| 亚洲精品自拍动漫在线| 东方欧美亚洲色图在线| 精品国产一区二区精华| 美女国产一区二区三区| 欧美日韩精品二区第二页| 亚洲欧美日韩在线| 成人激情av网| 欧美国产一区在线| 国产一区三区三区| 欧美v日韩v国产v| 麻豆成人免费电影| 欧美日本视频在线| 天天综合网天天综合色| 欧美性做爰猛烈叫床潮| 一区二区三区四区乱视频| 97se亚洲国产综合在线| 日韩毛片精品高清免费| 99久免费精品视频在线观看| 国产清纯在线一区二区www| 国产麻豆精品theporn| 久久先锋影音av| 国产不卡一区视频| 国产日韩欧美在线一区| 成人午夜激情影院| 欧美国产禁国产网站cc| 亚洲视频一二三| 日精品一区二区| 91精品在线免费| 激情国产一区二区| 久久久久久久久久久黄色| 国产精品综合久久| 欧美韩国日本不卡| av一本久道久久综合久久鬼色| 中文字幕一区视频| 色婷婷久久久久swag精品| 一区二区三区在线播| 欧美日韩高清不卡| 青青草成人在线观看| 精品国产乱码久久| 成人精品免费看| 亚洲码国产岛国毛片在线| 日本高清成人免费播放| 日韩电影在线观看电影| 欧美不卡视频一区| 国产成人av影院| 亚洲一区二区三区美女| 欧美一区二区三区的| 高清久久久久久| 亚洲综合999| 日韩免费一区二区三区在线播放| 国产宾馆实践打屁股91| 亚洲色图一区二区| 日韩欧美美女一区二区三区| 国产成都精品91一区二区三| 亚洲最新视频在线观看| 日韩欧美国产午夜精品| www.亚洲人|