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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ssl_with_signature.java

?? 身份認(rèn)證和數(shù)字簽名在實(shí)際應(yīng)用中是通過以數(shù)字證書為核心的公開密鑰基礎(chǔ)結(jié)構(gòu)(PKI)來實(shí)現(xiàn)的
?? JAVA
?? 第 1 頁 / 共 5 頁
字號(hào):
                  }
                  else
                  {
                  	replydata_length = buffer[p] & 127 + 128;
                  }
                  replydata_length = replydata_length <<8; 
                  p++;
                  if(buffer[p] >=0 ){
                  	replydata_length = buffer[p];
                  }
                  else
                  {
                  	replydata_length = buffer[p] & 127 + 128;
                  }
                  p++;
                  S_reply.replydata_length = replydata_length;
                  S_reply.replydata=new byte[S_reply.replydata_length];
                  for(int i=0;i<S_reply.replydata_length;i++)S_reply.replydata[i]=buffer[p++];
   	 	  
   	 	  byte signatureAlgorithm=buffer[p++];   //簽名算法
         	  //int s_length=(new Byte(buffer[p++])).intValue();      //簽名值的長(zhǎng)度
         	  int s_length = 0;
         	  if(buffer[p]>=0){
                  	s_length = buffer[p];
                  }
                  else
                  {
                  	s_length = buffer[p] & 127 + 128;
                  }
                  p++;
         	  byte[] signatureValue=new byte[s_length];
         	  for(int i=0;i<s_length;i++)signatureValue[i]=buffer[p++];
   	 	  DSignature reply_signature=new DSignature(signatureAlgorithm,s_length,signatureValue);
   	 	  S_reply.signature=reply_signature;
   	 	  Show_Message("對(duì)方返回簽名響應(yīng),內(nèi)容如下:");
   	 	  Show_Message(S_reply.toString());
   	 	  //驗(yàn)證對(duì)方的簽名
   	 	  //獲取對(duì)方的證書和公鑰
	          String partner_SubjectDN=null;   //對(duì)方證書的主題標(biāo)識(shí)名稱(subject distinguished name)
	          javax.security.cert.Certificate partner_cert =null;  //對(duì)方的證書,要使用Jsse定義的,不能使用原Java定義
	          PublicKey partner_publickey = null;
	          try{
	          //直接從SSL中獲取公鑰
	            SSLSession sslsession=((SSLSocket)s).getSession();   //獲取本次SSL連接使用的SSL會(huì)話
	            partner_cert=(javax.security.cert.Certificate)(sslsession.getPeerCertificateChain()[0]);  //對(duì)方的證書
	            Show_Debug_Message("對(duì)方證書信息");
	 	    Show_Debug_Message(partner_cert.toString());
	 	    partner_publickey=partner_cert.getPublicKey();
	 	    Show_Debug_Message("對(duì)方的公鑰信息");
	 	    Show_Debug_Message(partner_publickey.toString());
	 	    partner_SubjectDN=((javax.security.cert.X509Certificate)partner_cert).getSubjectDN().getName();
	 	    if(S_reply.signature.Verify(S_reply.replydata,partner_publickey)){
	 	        Show_Message("對(duì)方的數(shù)字簽名驗(yàn)證通過!");
	 	    }
	 	    else
	 	    {
	 	    	Show_Message("對(duì)方的數(shù)字簽名驗(yàn)證無法通過,可能是一個(gè)非法的簽名!");
	 	    }
		  } catch (Exception e) {
	    	    System.err.println("試圖驗(yàn)證對(duì)方數(shù)字簽名時(shí)出錯(cuò):" + e.getMessage());
	            e.printStackTrace();
	          }
   	 	  try{
        	   s.close();   //關(guān)閉socket
        	  } catch (IOException e)
        	  {
        		System.err.println("關(guān)閉socket出錯(cuò):" + e.getMessage());
	    		e.printStackTrace();
        	  }
        	  Show_Message("保存簽名記錄");
   	      	  Log_Object.SaveSignToLog(partner_SubjectDN+"在"+partner_host+"返回簽名響應(yīng),\n",S_request,S_reply);
        	  return new SSLsignature_record(S_request,S_reply,my_certificate,partner_cert);  //這里即使驗(yàn)證數(shù)字簽名通不過也不管
        	 }
        	 else
        	 {
        	  Show_Message("對(duì)方返回的隨機(jī)數(shù)與我方發(fā)出的不同!");
        	  try{
        	   s.close();   //關(guān)閉socket
        	  } catch (IOException e)
        	  {
        		System.err.println("關(guān)閉socket出錯(cuò):" + e.getMessage());
	    		e.printStackTrace();
        	  }
        	  return null;
        	 }
           default:
                 Show_Message("接收到的消息類型不對(duì)!");
                 try{
        	  s.close();   //關(guān)閉socket
        	 } catch (IOException e)
        	 {
        		System.err.println("關(guān)閉socket出錯(cuò):" + e.getMessage());
	    		e.printStackTrace();
        	 }	
         	return null;
         } 
   	//return null;
   } 
   /**
   * 顯示調(diào)試信息
   **/
   public static void Show_Debug_Message(String msg){
   	if(debug_mode){
   		System.err.println(msg);
   		System.err.flush();
   	}
   }
  /**
  * 顯示提示信息
  **/
   public static void Show_Message(String msg){
   	System.out.println(msg);
   	System.out.flush();
   }
  /**
  *  Show_Buffer_Hex:以Hex方式顯示緩沖區(qū)的內(nèi)容
  **/
   public static void Show_Buffer_Hex(String Desc,byte[] buf,int len)  {
     if(debug_mode){  
       System.err.println(Desc+":");
       for(int i=0;i<len;++i){
      	System.err.print("["+Conversion.byteToHexString(buf[i])+"]");
      	}
       System.err.println();
     }
  }
   /**
   *  提示客戶輸入信息
   **/
   public static String keyinString(String prompt){
    try{
   	 String inputLine;
   	 BufferedReader in=new BufferedReader(
   				new InputStreamReader(System.in));
   	 //System.err.println();
   	 System.err.print(prompt);
   	 System.err.flush();
   	 inputLine=in.readLine();
   	return inputLine;
     } catch (IOException e) {
     	System.err.println("輸入信息出錯(cuò):" + e.getMessage());
	e.printStackTrace();
	return null;     	
     }
   }
   /**
   *    彈出輸入窗口提示用戶輸入字符串
   *    Desc 為提示
   *    echoinput 為true時(shí)顯示鍵入的字符  為false顯示*號(hào)
   *    返回輸入的字符串
   **/
   public static String inputString_with_window(String Desc,boolean echoinput)
   {
   	return message_box.inputString(Desc,echoinput);
   }
   /**
   *   等價(jià)于inputString_with_window(String Desc,true);
   **/
   public static String inputString_with_window(String Desc)
   {
   	return inputString_with_window(Desc,true);
   }
   /**
   *   要求用戶人工確認(rèn)簽名
   *   S_request:簽名請(qǐng)求消息
   *   partner_cert:對(duì)方的數(shù)字證書
   **/
   public static boolean RequestPeopleConfirmSign(Signature_request S_request,javax.security.cert.Certificate partner_cert)
   {
   	Show_Message("以下是您收到的簽名請(qǐng)求:");
   	Show_Message("簽名請(qǐng)求者證書:"+partner_cert.toString());
   	String Desc_Message = null;
   	try{
   	 Show_Message("請(qǐng)求簽名的原因描述:"+(new String(S_request.signdata_desc,SSL_with_signature.BYTE_ENCODING)));
   	 Show_Message("要求您簽名的數(shù)據(jù):"+(new String(S_request.signdata,SSL_with_signature.BYTE_ENCODING)));
   	 Desc_Message = "收到簽名請(qǐng)求\n對(duì)方的數(shù)字證書:\n"+partner_cert.toString()+
   	"\n請(qǐng)求簽名的原因描述:"+(new String(S_request.signdata_desc,SSL_with_signature.BYTE_ENCODING))+"\n"+
   	 "要求您簽名的數(shù)據(jù):"+(new String(S_request.signdata,SSL_with_signature.BYTE_ENCODING))+"\n"+
   	 "您同意為該支付請(qǐng)求簽名嗎,提醒您注意,您的簽名將具法律效力\n鍵入YES后表示同意,其他取消:";
   	} catch ( UnsupportedEncodingException e)
   	{
   	   Show_Message("請(qǐng)求簽名的原因描述(使用本地字符集):"+(new String(S_request.signdata_desc)));
   	   Show_Message("要求您簽名的數(shù)據(jù):"+(new String(S_request.signdata)));
   	   Desc_Message = "收到簽名請(qǐng)求\n對(duì)方的數(shù)字證書:\n"+partner_cert.toString()+
   	"\n請(qǐng)求簽名的原因描述:"+(new String(S_request.signdata_desc))+"\n"+
   	 "要求您簽名的數(shù)據(jù):"+(new String(S_request.signdata))+"\n"+
   	 "您同意為該支付請(qǐng)求簽名嗎,提醒您注意,您的簽名將具法律效力\n鍵入YES后表示同意,其他取消:";
   	}
   	Show_Message("十六進(jìn)制表示:");
   	Show_Message(Conversion.byteArrayToHexString(S_request.signdata));
   	String command=SSL_with_signature.inputString_with_window(Desc_Message);
   	Show_Message("您選擇了"+command);
   	if(command.toUpperCase().equals("YES"))
   	  {
   	  	//SaveSignToLog(partner_name,S_request,S_reply);
   	  	return true;
   	  }
   	else
   	  {
   	  return false;
   	  }
   }
   /**
   *  main僅用于調(diào)試和演示SSL簽名協(xié)議
   *  程序用法:
   *  java com.zsusoft.zfl.SSL_with_signature [-debug] <mykeystore:私鑰庫> [-alias:Key Entry的alias] [-password:密碼]
   *     <-certkeystore:信任證書庫> [-certpassword:密碼] [-logfile:日志文件名]
   *  參數(shù)項(xiàng)目不分先后  其中[]表示可選 <>表示必選
   *  使用的私鑰庫和證書庫使用SUN JKS(Java Key Store)格式文件
   **/
   public static void main(String[] args) throws Exception {
   	boolean debug_mode = false;
   	String my_keystorefile = null; //我的私鑰庫
   	String my_alias = "mykey";     //私鑰庫中放私鑰的項(xiàng)目的alias name(參考Java Key Store的說明)
   	String password =null;         //訪問私鑰的密碼,本處假定訪問私鑰的密碼和存取Java Key Store的密碼相同
   	String trust_keystorefile = null ; //信任證書庫
   	String trust_password = null ; //信任證書庫的訪問密碼
   	String logfile =null;
   	for (int i = 0; i < args.length; ++i){
   		if(args[i].equals("-debug"))debug_mode=true;
   		if(args[i].startsWith("-mykeystore:")){
   			my_keystorefile=args[i].substring(12);
   			//System.out.println("密鑰庫:"+my_keystorefile);
   		}
   		if(args[i].startsWith("-alias:")){
   			my_alias=args[i].substring(7);
   			//System.out.println("私鑰的alias name:"+my_alias);
   		}
   		if(args[i].startsWith("-password:")){
   			password=args[i].substring(10);
   			//System.out.println("密鑰庫密碼:"+password);
   		}
   		if(args[i].startsWith("-certkeystore:")){
   			trust_keystorefile=args[i].substring(14);
   			//System.out.println("證書庫:"+trust_keystorefile);
   		}
   		if(args[i].startsWith("-certpassword:")){
   			trust_password=args[i].substring(14);
   			//System.out.println("證書庫密碼:"+trust_password);
   		}
   		if(args[i].startsWith("-logfile:"))logfile=args[i].substring(9);
   	}
   	Show_Message("********************************************************************");
   	Show_Message("* 軟件:Java簽名協(xié)議擴(kuò)展 (Java Signature Protocol Extension, JSPE)  *");
	Show_Message("* 版本:V1.0                                                        *");
        Show_Message("* 軟件功能:實(shí)現(xiàn)SSL簽名協(xié)議                                         *");
        Show_Message("*------------------------------------------------------------------*");
        Show_Message("*                                 版權(quán)所有:中山大學(xué)軟件研究所 2002 *");
        Show_Message("*                          Programmed by 佛山張峰嶺 fszfl@21cn.com *");
        Show_Message("*                                              2002.4 - 2002.5     *");
        Show_Message("********************************************************************");
   	if((my_keystorefile == null)||(trust_keystorefile == null)){
   	 System.err.println("程序用法:");
   	 System.err.println("java com.zsusoft.zfl.SSL_with_signature [-debug] <mykeystore:私鑰庫> [-alias:Key Entry的alias] [-password:密碼]  \\");
   	 System.err.println(" <-certkeystore:信任證書庫> [-certpassword:密碼] [-logfile:日志文件名]");
   	 System.err.println("參數(shù)項(xiàng)目不分先后  其中[]表示可選 <>表示必選");
   	 System.exit(-1);  //退出
   	}
   	if(password == null){
   	   password=inputString_with_window("請(qǐng)輸入您的個(gè)人私鑰庫的密碼:",false);
   	}
   	KeyStore mykeystore = KeyStore.getInstance("JKS", "SUN");;
   	try{
   	  mykeystore.load(new FileInputStream(my_keystorefile),password.toCharArray());
   	} catch (Exception e)
   	{
   	  System.err.println("裝入私人密鑰庫"+ my_keystorefile + "出錯(cuò):" + e.getMessage());
	  e.printStackTrace();
	  System.exit(-1);
   	}
   	if(trust_password == null){
   	   trust_password=inputString_with_window("請(qǐng)輸入信任證書庫的密碼:",false);
   	}
   	KeyStore trustkeystore = KeyStore.getInstance("JKS", "SUN");
   	try{
   	  trustkeystore.load(new FileInputStream(trust_keystorefile),trust_password.toCharArray());
   	} catch (Exception e)
   	{
   	  System.err.println("裝入信任證書庫"+ trust_keystorefile +"出錯(cuò):" + e.getMessage());
	  e.printStackTrace();
	  System.exit(-1);
   	}
   	String Command="Wait";
   	SSL_with_signature ssl_with_signature = null;
   	try{
   	  ssl_with_signature = new SSL_with_signature(mykeystore,my_alias,password,trustkeystore,logfile);
   	} catch ( Exception e)
   	{
   	  System.err.println("創(chuàng)建SSL_with_signature對(duì)象出錯(cuò):" + e.getMessage());
	  e.printStackTrace();
	  System.exit(-1);
   	}
   	ssl_with_signature.debug_mode=debug_mode;//設(shè)置調(diào)試開關(guān)
   	System.out.println("見=>請(qǐng)輸入命令 exit退出,help幫助");
   	//定義回調(diào)函數(shù)
   	SSLsignature_reply_callback callback=new SSLsignature_reply_callback()  
	       {
		/*
     		* Check_Signature_Request:表示接收到合法的簽名請(qǐng)求后檢查簽名請(qǐng)求中的數(shù)據(jù)
     		* 可以在這個(gè)地方加入執(zhí)行簽名前的一些前期處理,返回false表示拒絕簽名
     		*  S_request是簽名請(qǐng)求數(shù)據(jù)
                *  partner_cert是從SSLsession中獲取的對(duì)方的證書
     		*/
		public boolean Check_Signature_Request(Signature_request S_request,javax.security.cert.Certificate partner_cert){
     		       return SSL_with_signature.RequestPeopleConfirmSign(S_request,partner_cert);   //用戶人工確認(rèn)
     		}
     		/*
     		* Put_Attach_Data:加上簽名返回時(shí)的附加數(shù)據(jù)
     		*/

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩中文欧美在线| 久久久久国产精品麻豆ai换脸| 亚洲免费电影在线| 91美女精品福利| 亚洲一区在线视频观看| 欧美高清视频不卡网| 蜜臀久久久久久久| 国产午夜精品一区二区| 91美女精品福利| 婷婷六月综合网| 久久久99精品久久| jizz一区二区| 亚洲一区二区视频| 欧美变态凌虐bdsm| 成年人国产精品| 精品一区二区影视| 日韩欧美成人激情| 成人黄色a**站在线观看| 亚洲欧美电影院| 777色狠狠一区二区三区| 极品少妇xxxx偷拍精品少妇| 中文字幕一区日韩精品欧美| 欧美午夜电影一区| 久久成人免费电影| 综合欧美亚洲日本| 日韩一区二区免费在线观看| 成人蜜臀av电影| 午夜不卡在线视频| 国产欧美一区二区三区沐欲| 欧美系列亚洲系列| 狠狠色丁香久久婷婷综| 亚洲丝袜精品丝袜在线| 日韩欧美一级二级三级| 99热这里都是精品| 老鸭窝一区二区久久精品| 久久久美女毛片| 欧美日本不卡视频| k8久久久一区二区三区 | 亚洲一区二区三区四区在线观看 | 中文字幕第一页久久| 欧美另类高清zo欧美| 成人国产精品免费网站| 麻豆国产精品777777在线| 亚洲人成7777| 欧美激情一区三区| 欧美刺激午夜性久久久久久久| 在线国产亚洲欧美| 成人听书哪个软件好| 久久99热狠狠色一区二区| 亚洲午夜免费视频| 日韩美女精品在线| 中文字幕久久午夜不卡| 欧美成人高清电影在线| 欧美精品高清视频| 日本高清免费不卡视频| 成人高清视频在线| 高清在线观看日韩| 久久狠狠亚洲综合| 热久久久久久久| 日本亚洲三级在线| 亚洲成a人片在线不卡一二三区| 亚洲欧洲99久久| 欧美国产欧美亚州国产日韩mv天天看完整 | 日韩精品一区国产麻豆| 欧美日韩一区高清| 色噜噜狠狠一区二区三区果冻| 成人久久18免费网站麻豆| 黄一区二区三区| 久草这里只有精品视频| 久久精品国产在热久久| 日韩二区三区四区| 美女视频黄免费的久久 | 日日夜夜一区二区| 天天影视网天天综合色在线播放| 亚洲女同ⅹxx女同tv| 亚洲三级小视频| 一区二区久久久久| 亚洲黄色av一区| 亚洲欧美精品午睡沙发| 亚洲猫色日本管| 亚洲午夜久久久久| 五月婷婷久久综合| 日韩成人一区二区三区在线观看| 日韩电影在线免费看| 美女网站一区二区| 国产在线精品一区二区三区不卡| 精品一区精品二区高清| 国产一区二区在线观看视频| 国产精品69毛片高清亚洲| 处破女av一区二区| 色综合色综合色综合| 色视频成人在线观看免| 欧美日韩亚洲综合一区 | 欧美不卡在线视频| 国产日韩视频一区二区三区| 综合久久国产九一剧情麻豆| 亚洲精品国产第一综合99久久| 亚洲va欧美va天堂v国产综合| 日韩精品福利网| 韩日av一区二区| voyeur盗摄精品| 欧美日韩视频第一区| 精品国产亚洲在线| 国产精品电影院| 亚洲国产日韩在线一区模特| 国产做a爰片久久毛片| 成人av在线播放网站| 欧美天天综合网| 久久综合给合久久狠狠狠97色69| 国产精品美女久久久久aⅴ| 一区二区三区加勒比av| 韩国中文字幕2020精品| 色婷婷久久一区二区三区麻豆| 91精品国产综合久久精品图片| 中文欧美字幕免费| 亚洲曰韩产成在线| 国产精品中文字幕一区二区三区| 色综合天天综合网天天看片| 精品国偷自产国产一区| 亚洲黄色片在线观看| 国产一区二区免费在线| 欧美综合视频在线观看| 久久伊人中文字幕| 亚洲国产成人高清精品| 风间由美一区二区av101 | 免费成人av在线播放| 99国产精品久久久| 精品国产乱子伦一区| 一区二区三区在线影院| 国产精品乡下勾搭老头1| 欧美麻豆精品久久久久久| 国产精品国产三级国产aⅴ中文| 天堂va蜜桃一区二区三区| 99视频有精品| 免费观看日韩av| 看电影不卡的网站| 欧美在线制服丝袜| 国产精品美女一区二区在线观看| 青青草成人在线观看| 91福利视频在线| 国产精品短视频| 国产91丝袜在线播放0| 日韩欧美在线网站| 亚洲网友自拍偷拍| 99久久久免费精品国产一区二区| 久久你懂得1024| 美女诱惑一区二区| 3atv在线一区二区三区| 一区二区三区不卡在线观看| 99re在线视频这里只有精品| 国产欧美一区视频| 国产一区三区三区| 精品国产一区二区精华| 蜜桃精品在线观看| 欧美一级二级在线观看| 日韩精品每日更新| 欧美日韩精品一区二区天天拍小说 | 欧美精品一区视频| 日本中文字幕一区二区有限公司| 欧美日韩亚州综合| 亚洲成年人网站在线观看| 欧美亚洲日本国产| 亚洲一区在线观看网站| caoporn国产一区二区| 中文字幕精品一区二区三区精品| 国产久卡久卡久卡久卡视频精品| 日韩一区二区精品| 激情图片小说一区| 久久精品亚洲精品国产欧美kt∨ | 成人h动漫精品| 国产精品久久精品日日| 成人动漫一区二区| 《视频一区视频二区| 99久久综合99久久综合网站| 中文字幕在线免费不卡| 99r精品视频| 亚洲chinese男男1069| 91精品麻豆日日躁夜夜躁| 美女视频黄久久| 久久久久久9999| 91美女片黄在线观看| 亚洲国产中文字幕在线视频综合| 欧美剧情电影在线观看完整版免费励志电影 | 国产在线乱码一区二区三区| 国产偷国产偷亚洲高清人白洁| 成人97人人超碰人人99| 一区二区三区成人在线视频| 欧美久久久久久久久| 99精品国产一区二区三区不卡| 国产精品免费久久久久| 一本色道**综合亚洲精品蜜桃冫| 亚洲最新视频在线播放| 制服.丝袜.亚洲.另类.中文| 韩国视频一区二区| 国产精品美女久久久久久久网站| 欧美视频中文一区二区三区在线观看| 日韩 欧美一区二区三区| 久久久精品黄色| 色哟哟精品一区| 毛片av一区二区|