随笔-109  评论-187  文章-25  trackbacks-0

 

 1 import  java.io.BufferedReader;
 2 import  java.io.InputStreamReader;
 3 import  java.security.MessageDigest;
 4
 5 import  sun.misc.BASE64Decoder;
 6 import  sun.misc.BASE64Encoder;
 7
 8 public   class  ConvertNounce  {
 9
10      //  Digest = H(B64(H(username:password)):nonce)
11      //  b1=B64(H(username:password));
12      //
13      //
14      /**
15      *  @param  args
16       */

17      public   static   void  main(String[] args)  throws  Exception  {
18         
19
20         
21      //     if(args.length!=3) throw new Exception("args is wrong ,there is must by three args :username password nextNounce");
22
23         InputStreamReader reader  =   new  InputStreamReader(System.in);
24         BufferedReader input  =   new  BufferedReader(reader);
25     
26         
27         System.out.println( " input username: " );
28         String username  = input.readLine();
29         System.out.println( " input password: " );
30         String pwd  =  input.readLine();
31         System.out.println( " input nextNounce: " );
32         
33         String serverNounce  =  input.readLine();
34         String clientNounce  =   null ;
35
36         System.out.println( "" );
37         
38         System.out.println( " userName= " + username);
39         System.out.println( " password= " + pwd);
40         System.out.println( " nextNounce= " + serverNounce);
41          byte [] b1  =  calculateDigestAndEcode64(username, pwd);
42         
43      //     System.out.println("b1="+new String(b1));
44         
45          // server 下来的nounce一定要先做B64的解码,否则算出来的结果对不上
46         serverNounce  = new  String( new  BASE64Decoder().decodeBuffer(serverNounce));
47         
48      //     System.out.println(serverNounce);
49
50          byte [] bserverNounce  =  serverNounce.getBytes();
51
52          byte [] buf  =   new   byte [b1.length  +   1   +  bserverNounce.length];
53
54         System.arraycopy(b1,  0 , buf,  0 , b1.length);
55
56         buf[b1.length]  =  ( byte ' : ' ;
57         System.arraycopy(bserverNounce,  0 , buf, b1.length + 1 ,
58                         bserverNounce.length);
59         MessageDigest md  =  MessageDigest.getInstance( " MD5 " );
60         
61      //     System.out.println(new String(buf));
62
63          byte [] digest  =  md.digest(buf);
64         
65      //     System.out.println(new String(digest));
66
67         clientNounce  =   new  BASE64Encoder().encode(digest);
68         System.out.println( "" );
69         System.out.println( " result Nounce= " + clientNounce);
70         
73     }

74
75      public   static   byte [] calculateDigestAndEcode64(String username,
76             String password)  throws  Exception  {
77
78         MessageDigest md  =  MessageDigest.getInstance( " MD5 " );
79         String cred  =   "" ;
80          if  (username  !=   null {
81             cred  =  username.trim();
82         }

83         cred  +=   " : " ;
84          if  (password  !=   null {
85             cred  +=  password.trim();
86         }

87      //     System.out.println(cred);
88          //  System.out.println(new String(md.digest(cred.getBytes())));
89          return   new  BASE64Encoder().encode(md.digest(cred.getBytes()))
90                 .getBytes();
91     }

92     
93     
94
95 }

96
posted on 2007-01-11 14:57 小小程序程序员混口饭吃 阅读(1342) 评论(0)  编辑  收藏 所属分类: java

只有注册用户登录后才能发表评论。


网站导航: