锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产成人综合亚洲,精品亚洲综合久久中文字幕,亚洲人午夜射精精品日韩http://www.tkk7.com/Martin-Liu-Hai-Shi/articles/235985.htmlaisoftaisoftWed, 22 Oct 2008 09:09:00 GMThttp://www.tkk7.com/Martin-Liu-Hai-Shi/articles/235985.htmlhttp://www.tkk7.com/Martin-Liu-Hai-Shi/comments/235985.htmlhttp://www.tkk7.com/Martin-Liu-Hai-Shi/articles/235985.html#Feedback0http://www.tkk7.com/Martin-Liu-Hai-Shi/comments/commentRss/235985.htmlhttp://www.tkk7.com/Martin-Liu-Hai-Shi/services/trackbacks/235985.htmljsp鐨剈rl 錛歵est.jsp?property_id='ssss'&name='test';
涓銆佸畾涔変竴涓猨s鏂規(guī)硶銆?br /> function request(paras){ 
        var url = location.href; 
        var paraString = url.substring(url.indexOf("?")+1,url.length).split("&"); 
        var paraObj = {} 
        for (i=0; j=paraString[i]; i++){ 
            paraObj[j.substring(0,j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=")+1,j.length); 
        } 

        var returnValue = paraObj[paras.toLowerCase()]; 
        if(typeof(returnValue)=="undefined"){ 
            return ""; 
        }else{ 
            return returnValue; 
        }
}

        璋冪敤鏃剁洿鎺ワ細(xì)var value=request('鍙傛暟鍚?);
浜屻佺敤姝e垯琛ㄨ揪寮?br />     //鑾峰彇jsp欏甸潰url鍙傛暟鐨勫鹼紝鐩稿綋浜巖equest.getParameter('')涓鏍楓?br /> function  getUrlParam(name){  
      var   reg   =   new   RegExp("(^|&)"+   name   +"=([^&]*)(&|$)");  
      var   r   =   window.location.search.substr(1).match(reg);  
      if   (r!=null)   return   unescape(r[2]);   return   null;  
}
璋冪敤榪囩▼鍚屼笂銆傚 va  markerId=getUrlParam('property_id');  鍒欏彲浠ヨ幏鍙杙roperty_id鐨勫箋?



aisoft 2008-10-22 17:09 鍙戣〃璇勮
]]>
JAVA 鏁板瓧絳懼悕(杞澆)http://www.tkk7.com/Martin-Liu-Hai-Shi/articles/232849.htmlaisoftaisoftTue, 07 Oct 2008 02:26:00 GMThttp://www.tkk7.com/Martin-Liu-Hai-Shi/articles/232849.htmlhttp://www.tkk7.com/Martin-Liu-Hai-Shi/comments/232849.htmlhttp://www.tkk7.com/Martin-Liu-Hai-Shi/articles/232849.html#Feedback0http://www.tkk7.com/Martin-Liu-Hai-Shi/comments/commentRss/232849.htmlhttp://www.tkk7.com/Martin-Liu-Hai-Shi/services/trackbacks/232849.htmlJAVA 鏁板瓧絳懼悕


                                                                                                                                                    鏉ユ簮錛氳禌榪綉
                                                                                                                                                   浣滆咃細(xì)鏉庣礌縐?

(杞澆搴忥細(xì)緗戜笂鎵劇殑濂芥枃绔狅紝涓綃囧氨鎶婃垜鎵句簡鍑犲ぉ鐨勬墍鏈変笢瑗塊兘姒傛嫭榪涙潵浜嗭紝鐪熸槸闈炲父鎰熻阿浣滆咃細(xì)鏉庣礌縐?nbsp; 鍏跺疄鍦ㄦ壘璧勬枡鐨勮繃紼嬪綋涓紝涓昏娌¤В鍐崇殑闂鍦ㄤ簬濡備綍鑾峰緱KeyStore鏂囦歡涓殑PrivateKey錛屾湰鏉ユ煡jsdk 1.4 api鏂囨。灝卞彲浠ョ煡閬撲簡錛屼絾鏄眳鐒朵粠涓婂埌涓嬬湅浜?閬嶏紝娌℃湁鍙戠幇榪欎釜鏂規(guī)硶:load()  .......)
                                                                                                                                                   
璇佷功(Certificate錛屼篃縐皃ublic-key certificate)鏄敤鏌愮絳懼悕綆楁硶瀵規(guī)煇浜涘唴瀹?姣斿鍏挜)榪涜鏁板瓧絳懼悕鍚庡緱鍒扮殑銆佸彲浠ョ敤鏉ュ綋鎴愪俊浠誨叧緋諱腑浠嬬殑鏁板瓧鍑瘉銆傝瘉涔﹀彂琛屾満鏋勯氳繃鍙戣璇佷功鍛婄煡璇佷功浣跨敤鑰呮垨瀹炰綋鍏跺叕閽?public-key)浠ュ強(qiáng)鍏跺畠涓浜涜緟鍔╀俊鎭傝瘉涔﹀湪鐢?shù)瀛愬晢鍔″畨鍏ㄤ氦鏄撲腑鏈夌潃騫挎硾鐨勫簲鐢紝璇佷功鍙戣鏈烘瀯涔熺ОCA(Certificate Authority)銆?

搴旂敤璇佷功



璇佷功鍦ㄥ叕閽ュ姞瀵嗗簲鐢ㄤ腑鐨勪綔鐢ㄦ槸淇濊瘉鍏挜鍦ㄦ煇浜涘彲淇$殑鏈烘瀯鍙戝竷錛屽叾鍦ㄥ崗璁甋SL銆佺數(shù)瀛愪氦鏄撳崗璁甋ET絳夋柟闈㈡湁閲嶈鐨勫簲鐢ㄣ傚浘1鏄劇ず浜嗕竴涓渶綆鍗曠殑璇佷功搴旂敤鏂規(guī)硶錛?



鍥? 璇佷功搴旂敤鏂規(guī)硶



璇佷功鐨勫簲鐢ㄦ楠ゆ槸錛?

錛?錛?A鎶婅嚜宸辯殑鍏挜PKA閫佸埌CA(Certificate Authority)錛?

錛?錛?CA鐢ㄨ嚜宸辯殑縐侀挜鍜孉鐨勫叕閽ョ敓鎴怉鐨勮瘉涔︼紝璇佷功鍐呭寘鎷珻A鐨勬暟瀛楃鍚嶃傜鍚嶅璞″寘鎷渶瑕佸湪璇佷功涓鏄庣殑鍐呭錛屾瘮濡侫鐨勫叕閽ャ佹椂闂存埑銆佸簭鍒楀彿絳夛紝涓轟簡綆鍖栬繖閲屼笉濡ㄥ亣璁捐瘉涔︿腑鍙湁涓夐」鍐呭錛欰鐨勫叕閽KA銆佹椂闂存埑TIME1銆佸簭鍒楀彿IDA銆傞偅涔圕A鍙戦佺粰A鐨勭畝鍗曡瘉涔﹀嚟璇佸彲琛ㄨ揪涓猴細(xì)CertA=Eca[TIME1,IDA,PKA]錛?

錛?錛?B鍚屾牱鎶婅嚜宸辯殑鍏挜PKB閫佸埌CA錛?

錛?錛?B寰楀埌CA鍙戝竷鐨勮瘉涔ertB;

錛?錛?A鍛婄煡B璇佷功CertA錛?

錛?錛?B鍛婄煡A璇佷功CertB銆?

A銆丅鍚勮嚜寰楀埌瀵規(guī)柟璇佷功鍚庯紝鍒╃敤浠嶤A寰楀埌鐨勫叕閽?鍦–A鐨勮嚜絳捐瘉涔︿腑)楠岃瘉褰兼瀵規(guī)柟鐨勮瘉涔︽槸鍚︽湁鏁堬紝濡傛灉鏈夋晥錛岄偅涔堝氨寰楀埌浜嗗郊姝ょ殑鍏挜銆傚埄鐢ㄥ鏂圭殑鍏挜錛屽彲浠ュ姞瀵嗘暟鎹紝涔熷彲浠ョ敤鏉ラ獙璇佸鏂圭殑鏁板瓧絳懼悕銆?

鏈枃涓轟簡鏂逛究璇存槑錛屽茍娌℃湁浣跨敤浠嶤A鑾峰緱鐨勮瘉涔︼紝鑰屾槸閫氫俊鍙屾柟鍚勮嚜浜х敓鑷璇佷功錛屼篃灝辨槸璇村浘1鐨凙鍜孊騫舵病鏈夌粡榪嘋A錛屼笉榪囧墠鎻愭槸A鍜孊涔嬮棿鏄簰鐩告嫢鏈夊鏂圭殑璇佷功銆?

璇佷功鐨勫唴瀹瑰拰鎰忎箟濡傝〃1鎵紺猴紙榪欓噷浠ラ氱敤X .509璇佷功鏍煎紡涓轟緥錛夈?

琛? 璇佷功鍐呭鍜屾剰涔?/center>


璇佷功鍐呭 鎰忎箟
Version 鍛婅瘔榪欎釜X.509璇佷功鏄摢涓増鏈殑錛岀洰鍓嶆湁v1銆乂2銆乿3
Serial Number 鐢辮瘉涔﹀垎鍙戞満鏋勮緗瘉涔︾殑搴忓垪鍙?/td>
Signature Algorithm Identifier 璇佷功閲囩敤浠涔堟牱鐨勭鍚嶇畻娉?/td>
Issuer Name 璇佷功鍙戣鑰呭悕錛屼篃灝辨槸緇欒繖涓瘉涔︾鍚嶇殑鏈烘瀯鍚?/td>
Validity Period 璇佷功鏈夋晥鏃墮棿鑼冨洿
Subject Name 琚瘉涔﹀彂琛屾満鏋勭鍚嶅悗鐨勫叕閽ユ嫢鏈夎呮垨瀹炰綋鐨勫悕瀛楋紝閲囩敤X.500鍗忚錛屽湪Internet涓婄殑鏍囧織鏄儫涓鐨勩備緥濡傦細(xì)CN=Java,OU=Infosec,O=Infosec Lab,C=CN琛ㄧず涓涓猻ubject name銆?/td>



瀵硅瘉涔︾殑璇︾粏瀹氫箟鍙?qiáng)鍏跺簲鐢ㄧ浉鍏崇殑鍚効U嶅崗璁紝榪欓噷涓嶅姞璇︾粏璇存槑錛岃緇嗙粏鑺傝鏌ョ湅RFC2450銆丷FC2510銆丷FC2511銆丷FC2527銆丷FC2528銆丷FC2559銆丷FC2560銆丷FC2585銆丷FC2587絳夋枃妗c?

鐢熸垚鑷璇佷功



涓漢鎴栨満鏋勫彲浠ヤ粠淇′換鐨勮瘉涔﹀垎鍙戞満鏋勭敵璇峰緱鍒拌瘉涔︼紝姣斿璇達(dá)紝鍙互浠巋ttp://ca.pku.edu.cn 寰楀埌涓涓睘浜庝釜浜虹殑璇佷功銆傝繖閲屽彲浠ュ埄鐢↗2SDK鐨勫畨鍏ㄥ伐鍏穔eytool鎵嬪伐浜х敓鑷璇佷功錛屾墍璋撹嚜絳捐瘉涔︽槸鎸囪瘉涔︿腑鐨?#8220;Subject Name”鍜?#8220;Issuer Name”鐩稿悓鐨勮瘉涔︺?

涓嬮潰浜х敓涓涓嚜絳捐瘉涔︺傚畨瑁呭畬J2SDK錛堣繖閲岀敤鐨勬槸J2SDK1.4錛夊悗錛屽湪J2SDK瀹夎鐩綍鐨刡in鐩綍涓嬶紝鏈変竴涓猭eytool鐨勫彲鎵ц紼嬪簭銆傚埄鐢╧eytool浜х敓鑷璇佷功鐨勬楠ゅ涓嬶細(xì)

絎竴姝ワ紝鐢?genkey鍛戒護(hù)閫夐」錛屼駭鐢熷叕縐佸瘑閽ュ銆傚湪鎺у埗鍙扮晫闈㈣緭鍏ワ細(xì)keytool -genkey -alias testkeypair -keyalg RSA -keysize 1024 -sigalg MD5withRSA銆傝繖閲岀殑-alias琛ㄧず浣跨敤榪欏鍏瀵嗛挜浜х敓鏂扮殑keystore鍏ュ彛鐨勫埆鍚?keystore鏄敤鏉ュ瓨鏀劇鐞嗗瘑閽ュ鍜岃瘉涔﹂摼鐨勶紝緙虹渷浣嶇疆鏄湪浣跨敤鑰呬富鐩綍涓嬶紝浠?keystore涓哄悕鐨勯殣钘忔枃浠訛紝褰撶劧涔熷彲鎸囧畾鏌愪釜璺緞瀛樻斁.keystore鏂囦歡)錛?keyalg鏄駭鐢熷叕縐侀挜瀵規(guī)墍鐢ㄧ殑綆楁硶錛岃繖閲屾槸RSA錛?keysize瀹氫箟瀵嗛挜鐨勯暱搴︼紱-sigalg鏄鍚嶇畻娉曪紝閫夋嫨MD5withRSA錛屽嵆鐢≧SA絳懼悕錛岀劧鍚庣敤MD5鍝堝笇綆楁硶鎽樿銆傛帴涓嬫潵錛岀郴緇熶細(xì)鎻愮ず榪涜涓浜涜緭鍏ワ細(xì)

杈撳叆keystore瀵嗙爜錛? abc123
            鎮(zhèn)ㄧ殑鍚嶅瓧涓庡姘忔槸浠涔堬紵
            [Unknown]錛? Li
            鎮(zhèn)ㄧ殑緇勭粐鍗曚綅鍚嶇О鏄粈涔堬紵
            [Unknown]錛? InfosecLab
            鎮(zhèn)ㄧ殑緇勭粐鍚嶇О鏄粈涔堬紵
            [Unknown]錛? InfosecLab Group
            鎮(zhèn)ㄦ墍鍦ㄧ殑鍩庡競鎴栧尯鍩熷悕縐版槸浠涔堬紵
            [Unknown]錛? Beijing
            鎮(zhèn)ㄦ墍鍦ㄧ殑宸炴垨鐪佷喚鍚嶇О鏄粈涔堬紵
            [Unknown]錛? Beijing
            璇ュ崟浣嶇殑涓ゅ瓧姣嶅浗瀹朵唬鐮佹槸浠涔?
            [Unknown]錛? CN
            CN=Li, OU=InfosecLab, O=InfosecLab Group, L=Beijing, ST=Beijing, C=CN 姝g‘鍚楋紵
            [鍚錛? y
            杈撳叆<testkeypair>鐨勪富瀵嗙爜 (濡傛灉鍜?keystore 瀵嗙爜鐩稿悓錛屾寜鍥炶濺錛夛細(xì)


絎簩姝ワ紝浜х敓鑷璇佷功錛岃緭鍏ヤ互涓嬪懡浠わ細(xì)

keytool -selfcert -alias testkeypair -dname "CN=Li, OU=InfosecLab, O=InfosecLab
            Group, L=Beijing, ST=Beijing, C=CN"
            杈撳叆keystore瀵嗙爜錛? abc123


絎笁姝ワ紝瀵煎嚭鑷璇佷功錛岀敱涓婇潰涓ゆ浜х敓鐨勮瘉涔︼紝宸茬粡瀛樻斁鍦ㄤ互“testkeypair”涓哄埆鍚嶇殑keystore鍏ュ彛浜嗭紝濡傛灉浣跨敤鍏舵枃浠訛紝蹇呴』瀵煎嚭璇佷功銆傝緭鍏?

keytool -export -rfc -alias testkeypair -file mycert.crt
            杈撳叆keystore瀵嗙爜錛? abc123
            淇濆瓨鍦ㄦ枃浠朵腑鐨勮璇?<mycert.crt>


榪欐牱錛屽氨寰楀埌浜嗕竴涓嚜絳劇殑璇佷功mycert.crt銆傛敞鎰忥紝閫夐」rfc鏄妸璇佷功杈撳嚭涓篟FC1421瀹氫箟鐨勩佺敤Base64鏈緇堢紪鐮佺殑鏍煎紡銆?

璇誨彇璇佷功



Java涓哄畨鍏ㄥ簲鐢ㄦ彁渚涗簡涓板瘜鐨凙PI錛孞2SDK1.4 鐨凧SSE (JavaTM Secure Socket Extension) 鍖呮嫭javax.security.certificate鍖咃紝騫朵笖鎻愪緵瀵硅瘉涔︾殑鎿嶄綔鏂規(guī)硶銆傝屽璇佷功鐨勮鎿嶄綔錛屽彧鐢╦ava.security.cert. CertificateFactory鍜宩ava.security.cert.X509Certificate灝卞彲浠ヤ簡銆備笅闈㈡槸璇誨彇璇佷功鍐呭鐨勯儴鍒嗕唬鐮侊細(xì)

import javax.swing.*;
            import java.awt.*;
            import java.awt.event.*;
            import javax.swing.table.*;
            import java.security.cert.CertificateFactory;
            import java.security.cert.X509Certificate;
            import java.io.*;
            public class CARead extends JPanel {
            private String CA_Name;
            private String CA_ItemData[][] = new String[9][2];
            private String[] columnNames = {"璇佷功瀛楁鏍囪","鍐呭" };
            public CARead(String CertName) {
            CA_Name=CertName;
            /* 涓変釜Panel鐢ㄦ潵鏄劇ず璇佷功鍐呭*/
            JTabbedPane tabbedPane = new JTabbedPane();
            JPanel panelNormal = new JPanel();
            tabbedPane.addTab("鏅氫俊鎭?, panelNormal);
            JPanel panelAll=new JPanel();
            panelAll.setLayout(new BorderLayout());
            tabbedPane.addTab("鎵鏈変俊鎭?,panelAll);
            JPanel panelBase64=new JPanel();
            panelBase64.setLayout(new BorderLayout());
            tabbedPane.addTab("Base64緙栫爜淇℃伅",panelBase64);
            /* 璇誨彇璇佷功甯歌淇℃伅 */
            Read_Normal(panelNormal);
            /* 璇誨彇璇佷功鏂囦歡瀛楃涓茶〃紺哄唴瀹?*/
            Read_Bin(panelAll);
            /* 璇誨彇璇佸師濮婤ase64緙栫爜褰㈠紡鐨勮瘉涔︽枃浠?*/
            Read_Raw(panelBase64);
            tabbedPane.setSelectedIndex(0);
            setLayout(new GridLayout(1, 1));
            add(tabbedPane);
            }
            /*浠ヤ笅鏄畾涔夌殑Read_Normal()錛孯ead_Bin(),Read_Raw()浠ュ強(qiáng)main()
            榪欓噷鐪佺暐...   */
            }


瀹氫箟璇佷功淇℃伅鐨勮鍙栧嚱鏁板涓嬶細(xì)

private int Read_Normal(JPanel panel){
            String Field;
            try{
            CertificateFactory certificate_factory=CertificateFactory.getInstance("X.509");
            FileInputStream file_inputstream=new FileInputStream(CA_Name);
            X509Certificate
            x509certificate=(X509Certificate)certificate_factory.generateCertificate
            (file_inputstream);
            Field=x509certificate.getType();
            CA_ItemData[0][0]="綾誨瀷";
            CA_ItemData[0][1]=Field;
            Field=Integer.toString(x509certificate.getVersion());
            CA_ItemData[1][0]="鐗堟湰";
            CA_ItemData[1][1]=Field;
            Field=x509certificate.getSubjectDN().getName();
            CA_ItemData[2][0]="鏍囬";
            CA_ItemData[2][1]=Field;
            /* 浠ヤ笅綾諱技錛岃繖閲岀渷鐣?
            Field=x509certificate.getNotBefore().toString();寰楀埌寮濮嬫湁鏁堟棩鏈?
            Field=x509certificate. getNotAfter().toString();寰楀埌鎴鏃ユ湡
            Field=x509certificate.getSerialNumber().toString(16);寰楀埌搴忓垪鍙?
            Field=x509certificate.getIssuerDN().getName();寰楀埌鍙戣鑰呭悕
            Field=x509certificate.getSigAlgName();寰楀埌絳懼悕綆楁硶
            Field=x509certificate.getPublicKey().getAlgorithm();寰楀埌鍏挜綆楁硶 */
            file_inputstream.close();
            final JTable table = new JTable(CA_ItemData, columnNames);
            TableColumn tc=null;
            tc = table.getColumnModel().getColumn(1);
            tc.setPreferredWidth(600);
            panel.add(table);
            }catch(Exception exception){
            exception.printStackTrace();
            return -1;
            }
            return 0;
            }


濡傛灉浠ュ瓧絎︿覆褰㈠紡璇誨彇璇佷功錛屽姞鍏ヤ笅闈ead_Bin榪欎釜鍑芥暟銆傚叾涓瑿ertificateFactory.generateCertificate() 榪欎釜鍑芥暟鍙互浠庤瘉涔︽爣鍑嗙紪鐮?RFC1421瀹氫箟)涓В鍑哄彲璇諱俊鎭俁ead_Bin鍑芥暟浠g爜濡備笅錛?

private int Read_Bin(JPanel panel){
            try{
            FileInputStream file_inputstream=new FileInputStream(CA_Name);
            DataInputStream data_inputstream=new DataInputStream(file_inputstream);
            CertificateFactory certificatefactory=CertificateFactory.getInstance("X.509");
            byte[] bytes=new byte[data_inputstream.available()];
            data_inputstream.readFully(bytes);
            ByteArrayInputStream bais=new ByteArrayInputStream(bytes);
            JEditorPane Cert_EditorPane;
            Cert_EditorPane=new JEditorPane();
            while(bais.available()>0){
            X509Certificate
            Cert=(X509Certificate)certificatefactory.generateCertificate(bais);
            Cert_EditorPane.setText(Cert_EditorPane.getText()+Cert.toString());
            }
            Cert_EditorPane.disable();
            JScrollPane edit_scroll=new JScrollPane(Cert_EditorPane);
            panel.add(edit_scroll);
            file_inputstream.close();
            data_inputstream.close();
            }catch( Exception exception){
            exception.printStackTrace();
            return -1;
            }
            return 0;
            }


濡傛灉瑕佸緱鍒板師濮嬭瘉涔︾紪鐮佸悗鐨勪俊鎭紝鍒欏彲鐢ㄥ涓嬩唬鐮侊細(xì)

private int Read_Raw(JPanel panel){
            try{
            JEditorPane Cert_EditorPane=new JEditorPane();
            String CertText=null;
            File inputFile = new File(CA_Name);
            FileReader in = new FileReader(inputFile);
            char[] buf=new char[2000];
            int len=in.read(buf,0,2000);
            for(int i=1;i<len;i++)
            {
            CertText=CertText+buf[i];
            }
            in.close();
            Cert_EditorPane.setText(CertText);
            Cert_EditorPane.disable();
            JScrollPane edit_scroll=new JScrollPane(Cert_EditorPane);
            panel.add(edit_scroll);
            }catch( Exception exception){
            exception.printStackTrace();
            return -1;
            }
            return 0;
            }


鏈鍚庣敤榪欎釜灝忕▼搴忕湅涓鐪嬪垰鎵嶇敓鎴愮殑璇佷功mycert.crt鍐呭錛屾妸鏂囦歡鍚嶅啓鍏ain()涓細(xì)

public static void main(String[] args) {
            JFrame frame = new JFrame("璇佷功闃呰鍣?);
            frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {System.exit(0);}
            });
            frame.getContentPane().add(new CARead("mycert.crt"),BorderLayout.CENTER);
            frame.setSize(700, 425);
            frame.setVisible(true);
            }


璇佷功mycert.crt鐨勫唴瀹規(guī)樉紺哄鍥?鎵紺猴紝鎵鏈変俊鎭拰Base64鐨勬樉紺哄唴瀹癸紝榪欓噷涓嶅啀鍒椾婦銆?



 

鍥? 璇佷功mycert.crt鐨勫唴瀹規(guī)樉紺?/center>
 
鐜板湪宸茬粡璇誨彇浜嗚瘉涔︾殑涓浜涘唴瀹癸紝閭d箞鎬庢牱浣跨敤璇佷功鍛紵鎴戜滑鍙互鍋囪A鍜孊瑕佸叡浜竴涓粷瀵嗙殑鏂囦歡F錛孊淇′換騫舵嫢鏈堿鐨勮瘉涔︼紝涔熷氨鏄B鎷ユ湁A鐨勫叕閽ャ傞偅涔圓閫氳繃A鍜孊鍏辯煡鐨勫姞瀵嗙畻娉?瀵圭О瀵嗛挜綆楁硶錛屾瘮濡侱ES綆楁硶)鍏堝姞瀵嗘枃浠禙錛岀劧鍚庡鍔犲瘑鍚庣殑F榪涜絳懼悕鍜屾暎鍒楁憳瑕?姣斿MD5綆楁硶錛岀洰鐨勬槸淇濊瘉鏂囦歡鐨勫畬鏁存?錛岀劧鍚庢妸F鍙戦佸埌B銆侭鏀跺埌鏂囦歡鍚庯紝鍏堢敤A鐨勮瘉涔︿腑鐨勫叕閽ラ獙璇佺鍚嶏紝鐒跺悗鍐嶇敤閫氳繃鍏辯煡鐨勫姞瀵嗙畻娉曡В瀵嗭紝灝卞彲浠ュ緱鍒板師鏂囦歡浜嗐傝繖閲屼嬌鐢ㄧ殑鏁板瓧絳懼悕錛屽彲浠ヤ繚璇丅寰楀埌鐨勬枃浠訛紝灝辨槸A鐨勶紝A涓嶈兘鍚﹁鍏朵笉鎷ユ湁鏂囦歡F錛屽洜涓哄彧鏈堿鎷ユ湁鍙互璁〢鐨勫叕閽ラ獙璇佸叾絳懼悕鐨勭閽ワ紝鍚屾椂榪欓噷浣跨敤DES綆楁硶鍔犲瘑錛屼嬌寰楁枃浠舵湁淇濆瘑鎬с?

浣跨敤DES綆楁硶鐨勫姞瀵嗚В瀵嗗嚱鏁扮被浼鹼紝榪欓噷涓嶅鍔犲瘑綆楁硶鍋氳繘涓姝ヨ璁猴紝璇︾粏璇風(fēng)湅J2SDK鐨凧SE閮ㄥ垎鍐呭錛屽姞瀵嗙鍚嶃佽В瀵嗛獙璇佹枃浠剁粨鏋勮鍥?銆?



鍥? 鍔犲瘑絳懼悕銆佽В瀵嗛獙璇佹枃浠剁粨鏋勫浘


鍔犲瘑鍑芥暟涓殑desKeyData瀛樻斁DES鍔犲瘑瀵嗛挜錛屽鏋滆鍦ㄧ▼搴忎腑鎸囧畾錛屽彲浠ヨ緗負(fù)錛?

static byte[] desKeyData = { (byte)0x01, (byte)0x02, (byte)0x03, (byte)0x04,
            (byte)0x05, (byte)0x06, (byte)0x07, (byte)0x08 };


鍔犲瘑鍑芥暟鍐欐垚錛?

public static void crypt(byte[] cipherText,String outFileName){
            try{
            DESKeySpec desKeySpec = new DESKeySpec(desKeyData);
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
            SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
            Cipher cdes = Cipher.getInstance("DES");
            cdes.init(Cipher.ENCRYPT_MODE, secretKey);
            byte[] ct = cdes.doFinal(cipherText);
            try{
            FileOutputStream out=new FileOutputStream(outFileName);
            out.write(ct);
            out.close();
            }catch(IOException e){
            e.printStackTrace();
            }
            }catch (Exception e){
            e.printStackTrace();
            }
            }


鍏朵腑ct灝辨槸鍔犲瘑鍚庣殑鍐呭,outFileName淇濆瓨鍔犲瘑鍚庢枃浠剁殑鏂囦歡鍚嶃傛妸cdes.init(Cipher.ENCRYPT_MODE, secretKey)鎹㈡垚cdes.init(Cipher.DECRYPT_MODE, secretKey)灝辨槸瑙e瘑鏂囦歡浜嗐?

鏂囦歡鍔犲瘑鍚庡氨瑕佸鏂囦歡絳懼悕錛屼繚璇丄鍙戦佸埌B鐨勬枃浠朵笉鍙吉閫犮備笅闈㈡槸鐢ㄥ瓨鏀懼湪.keystore涓殑縐侀挜榪涜絳懼悕鐨勫嚱鏁幫紝絳懼悕浣跨敤鐨勬憳瑕佺畻娉曟槸MD5銆傚叾涓璼igText鏄絳懼悕鍐呭鐨勮緭鍏ユ暟緇勶紝outFileName鏄繚瀛樼鍚嶅悗杈撳嚭鏂囦歡鐨勫悕縐幫紝KeyPassword鏄鍙朘eystore浣跨敤鐨勫瘑鐮侊紝KeyStorePath鏄瓨鏀?keystore鏂囦歡鐨勮礬寰勶紝鍑芥暟浠g爜濡備笅錛?

public static void sig(byte[] sigText, String outFileName,String
            KeyPassword,String KeyStorePath){
            char[] kpass;
            int i;
            try{
            KeyStore ks = KeyStore.getInstance("JKS");
            FileInputStream ksfis = new FileInputStream(KeyStorePath);
            BufferedInputStream ksbufin = new BufferedInputStream(ksfis);
            kpass=new char[KeyPassword.length()];
            for(i=0;i<KeyPassword.length();i++)
            kpass[i]=KeyPassword.charAt(i);
            ks.load(ksbufin, kpass);
            PrivateKey priv = (PrivateKey) ks.getKey(KeystoreAlias,kpass );
            Signature rsa=Signature.getInstance("MD5withRSA");
            rsa.initSign(priv);
            rsa.update(sigText);
            byte[] sig=rsa.sign();
            System.out.println("sig is done");
            try{
            FileOutputStream out=new FileOutputStream(outFileName);
            out.write(sig);
            out.close();
            }catch(IOException e){
            e.printStackTrace();
            }
            }catch(Exception e){
            e.printStackTrace();
            }
            }


楠岃瘉絳懼悕闇瑕佸瓨鏀劇鍚嶆枃浠跺拰琚鍚嶇殑鏂囦歡浠ュ強(qiáng)璇佷功錛屽叾涓紝updateData瀛樻斁琚鍚嶆枃浠剁殑鍐呭錛宻igedText瀛樻斁寰楀埌鐨勭鍚嶅唴瀹癸紝CertName鏄瘉涔﹀悕銆傞獙璇佺鍚嶄唬鐮佸涓嬶細(xì)

public static void veriSig(byte[] updateData, byte[] sigedText){
            try{
            CertificateFactory
            certificatefactory=CertificateFactory.getInstance("X.509");
            FileInputStream fin=new FileInputStream(CertName);
            X509Certificate
            certificate=(X509Certificate)certificatefactory.generateCertificate(fin);
            PublicKey pub = certificate.getPublicKey();
            Signature rsa=Signature.getInstance("MD5withRSA");
            rsa.initVerify(pub);
            rsa.update(updateData);
            boolean verifies=rsa.verify(sigedText);
            System.out.println("verified "+verifies);
            if(verifies){
            System.out.println("Verify is done!");
            }else{
            System.out.println("verify is not successful");
            }
            }catch(Exception e){
            e.printStackTrace();
            }
            }


鍙互鐢╧eytool浜х敓涓や釜鑷鐨勭鍚嶈瘉涔︼紝鎴栬呭埌鏌愪釜CA鍘葷敵璇蜂袱涓瘉涔︺傜敤Java緙栧啓鍔犲瘑鍜岄獙璇佺▼搴忥紝涓婅堪渚嬪瓙鍙槸涓涓潪甯哥畝鍗曠殑璇佷功搴旂敤錛屽疄闄呭崗璁璇佷功鐨勪嬌鐢?姣斿SSL)瑕佹瘮榪欎釜澶嶆潅澶氫簡銆?


aisoft 2008-10-07 10:26 鍙戣〃璇勮
]]>Hibernate搴旇濡備綍閰嶇疆Access鏁版嵁搴撱?/title><link>http://www.tkk7.com/Martin-Liu-Hai-Shi/articles/225292.html</link><dc:creator>aisoft</dc:creator><author>aisoft</author><pubDate>Thu, 28 Aug 2008 06:27:00 GMT</pubDate><guid>http://www.tkk7.com/Martin-Liu-Hai-Shi/articles/225292.html</guid><wfw:comment>http://www.tkk7.com/Martin-Liu-Hai-Shi/comments/225292.html</wfw:comment><comments>http://www.tkk7.com/Martin-Liu-Hai-Shi/articles/225292.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/Martin-Liu-Hai-Shi/comments/commentRss/225292.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/Martin-Liu-Hai-Shi/services/trackbacks/225292.html</trackback:ping><description><![CDATA[<div id="owk4uwa" class="blog_content">---------<a >Hibernate鍜孉ccess(杞澆)</a>--------<br /> <br /> 1銆丠ibernate瀵逛簬Access鐨勬敮鎸?<br /> <br /> 鏂規(guī)硶涓錛?<br /> <br /> 涓嬭澆涓や釜jar鍖咃紝涓涓槸Access鐨凧DBC椹卞姩鍖咃紱鍙︿竴涓槸鏁版嵁搴撴柟璦鍖咃紝閲岄潰鏈夋敮鎸丄ccess鏂硅█鐨勭被銆?<br /> <br /> 涓嬭澆鍦板潃錛歨ttp://www.hxtt.com/access.zip錛宧ttp://www.hxtt.com/test/hibernate.zip銆?<br /> <br /> 閰嶇疆濡備笅錛?<br /> <br /> xml 浠g爜 <br /> <property name="hibernate.dialect"> <br /> com.hxtt.support.hibernate.HxttAccessDialect <br /> </property> <br /> <property name="hibernate.connection.url"> <br /> jdbc:access:///f:/mdbfiles/aaa.mdb <br /> </property> <br /> <property name="hibernate.connection.driver_class"> <br /> com.hxtt.sql.access.AccessDriver <br /> </property> <br /> <br /> 鏂規(guī)硶浜岋細(xì) <br /> <br /> 棣栧厛鍏堣鍦∣DBC閲岄厤緗ソ鎴戜滑鐨凙ccess鏁版嵁搴擄紝鎺у埗闈㈡澘--->綆$悊宸ュ叿--->ODBC錛岄夋嫨緋葷粺DSN閫夐」鍗★紝鎸夋坊鍔犳寜閽紝閫塂river do Mircosoft Access(*.mdb)錛屽畬鎴愶紝鍦―ataSource Name涓緭鍏ヤ綘鎯寵鐨勫悕瀛楁瘮濡俬ibtest錛屽悗闈㈠皢鐢ㄥ畠鏉ユ煡鎵炬暟鎹簱銆傜劧鍚庢寚瀹氭暟鎹簱鎵鍦ㄤ綅緗氨O(jiān)K浜嗐?<br /> <br /> Hibernate鎻忚堪鏂囦歡鍙互鏄竴涓猵roperties鎴杧ml 鏂囦歡錛屽叾涓渶閲嶈鐨勬槸瀹氫箟鏁版嵁搴撶殑榪炴帴銆傛垜榪欓噷鍒楀嚭鐨勬槸涓涓猉ML鏍煎紡鐨刪ibernate.cfg.xml鎻忚堪鏂囦歡銆?<br /> <br /> <br /> xml 浠g爜 <br /> <?xml version="1.0" encoding="utf-8"?> <br /> <!DOCTYPE hibernate-configuration <br /> PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" <br /> "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd"> <br /> <hibernate-configuration> <br /> <session-factory name="java:/hibernate/HibernateFactory"> <br /> <property name="show_sql">true</property> <br /> <property name="connection.driver_class"> <br /> sun.jdbc.odbc.JdbcOdbcDriver<!-- 榪欓噷鏄疉ccess鐨凧DBCdriverclass鍚?--> <br /> </property> <br /> <property name="connection.url"> <br /> jdbc:odbc:hibtest <!-- 榪欓噷鏄綘鍒氭墠鎸囧畾鐨勬暟鎹簱鍚嶅瓧 --> <br /> </property> <br /> <property name="connection.username">sa</property> <br /> <property name="connection.password"></property> <br /> <property name="dialect"> <br /> net.sf.hibernate.dialect.MySQLDialect <!-- 榪欓噷鏄疉ccess鐨凞ialect --> <br /> </property> <br /> <mapping resource="Customer.hbm.xml"/> <!-- 鎸囧畾Customer鐨勬槧灝勬枃浠?--> <br /> </session-factory> <br /> </hibernate-configuration> <br /> <br /> <span style="color: red">鏂規(guī)硶涓夛細(xì) <br /> 1銆?lt;!-- SQL鏂硅█錛孉ccess鍜孲QLserver鐩歌繎錛屾墍浠ヨ繖涔堝啓錛屼弗鏍兼剰涔変細(xì)鍑洪敊錛屼絾鏄皾璇曠畝鍗曡繛鎺ユ椂鍙互鐨?--> <br /> <property name="dialect"> <br /> org.hibernate.dialect.SQLServerDialect <br /> </property> <br /> 2銆?lt;!-- JDBC椹卞姩紼嬪簭 --> <br /> <property name="connection.driver_class"> <br /> sun.jdbc.odbc.JdbcOdbcDriver <br /> </property> <br /> <br /> <br /> 3銆?lt;!-- JDBC URL 錛岄渶瑕佹敞鎰忕殑鏄暟鎹簱浣嶇疆浣跨敤緇濆璺緞灝卞彲浠?-> <br /> <property name="connection.url"> <br /> jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=E:\STDateBase\student.mdb <br /> </property> </span></div> <img src ="http://www.tkk7.com/Martin-Liu-Hai-Shi/aggbug/225292.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/Martin-Liu-Hai-Shi/" target="_blank">aisoft</a> 2008-08-28 14:27 <a href="http://www.tkk7.com/Martin-Liu-Hai-Shi/articles/225292.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Java 璇誨彇緗戦〉Html鏂囦歡http://www.tkk7.com/Martin-Liu-Hai-Shi/articles/214615.htmlaisoftaisoftSun, 13 Jul 2008 12:38:00 GMThttp://www.tkk7.com/Martin-Liu-Hai-Shi/articles/214615.htmlhttp://www.tkk7.com/Martin-Liu-Hai-Shi/comments/214615.htmlhttp://www.tkk7.com/Martin-Liu-Hai-Shi/articles/214615.html#Feedback2http://www.tkk7.com/Martin-Liu-Hai-Shi/comments/commentRss/214615.htmlhttp://www.tkk7.com/Martin-Liu-Hai-Shi/services/trackbacks/214615.htmlimport java.net.*;
import java.io.*;

public class urlconnection
{
    public static void main(String[] args)
    {
        StringBuffer document = new StringBuffer();
        try 
        {
            URL url = new URL("http://www.163.com");
            URLConnection conn = url.openConnection();
            BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String line = null;
            while ((line = reader.readLine()) != null)
            document.append(line + " ");
            reader.close();
        }
        catch (MalformedURLException e) 
        {
            e.printStackTrace(); 
        }
        catch (IOException e)
        {
            e.printStackTrace(); 
        }
        System.out.println(document.toString());
    }
}
==========================================================
鏂規(guī)硶浜岋細(xì)
==========================================================
import java.net.*;
import java.io.*;

public class useSourceViewer
{
    public static void main (String[] args) 
    {
        if (args.length > 0) 
        {
            try 
            {

                URL u = new URL(args[0]);
                InputStream in = u.openStream( );

                in = new BufferedInputStream(in);

                Reader r = new InputStreamReader(in);
                int c;
                while ((c = r.read( )) != -1) 
                {
                    System.out.print((char) c);
                }
                Object o = u.getContent( );
                System.out.println("I got a " + o.getClass().getName( ));
            }
            catch (MalformedURLException e) 
            {
                System.err.println(args[0] + " is not a parseable URL");
            }
            catch (IOException e) 
            {
                System.err.println(e);
            }
        } 
    }
}



aisoft 2008-07-13 20:38 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 亚洲AV无码XXX麻豆艾秋| 亚洲视频一区网站| 风间由美在线亚洲一区| 国外成人免费高清激情视频| 久久乐国产综合亚洲精品| 在线看片免费不卡人成视频| 久久久亚洲裙底偷窥综合| 亚洲精品视频免费在线观看| 亚洲高清视频免费| 欧洲乱码伦视频免费| 亚洲一区二区三区免费观看| 999国内精品永久免费观看| 亚洲熟女www一区二区三区| 国产成人免费手机在线观看视频| 日本亚洲欧美色视频在线播放| 国产三级电影免费观看| 一级毛片不卡免费看老司机| 亚洲中文字幕久久精品无码APP| 永久免费av无码入口国语片| 91情国产l精品国产亚洲区| 免费影院未满十八勿进网站| 亚洲国产精品99久久久久久| 亚洲国产精品成人网址天堂| 中文字幕在线免费看线人| 国产精品亚洲二区在线| 国产人成免费视频| 两个人看的www高清免费观看| 久久久久亚洲精品无码系列| 青青视频观看免费99| 另类专区另类专区亚洲| 亚洲精品自在在线观看| 95免费观看体验区视频| 亚洲成熟丰满熟妇高潮XXXXX| 亚洲精品国产电影| 99久久免费精品高清特色大片| 亚洲日韩中文字幕无码一区| 免费人成年轻人电影| 99re免费99re在线视频手机版| 亚洲av成人一区二区三区观看在线 | 国产视频精品免费| 国产成人高清精品免费观看|