小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Android 用戶遠程驗證----XFIRE,BASE64,KSOAP,WEBSERVI...

 software1 2011-06-10
Android 用戶遠程驗證----XFIRE,BASE64,KSOAP,WEBSERVICE
 原文鏈接:http://www./Linux/2011-04/35011p2.htm
Base64算法相信大家都比較熟悉吧,dt.jar已經(jīng)提拱了具體的實現(xiàn)細節(jié)。你可以查閱相關文檔和源碼,

 

package com.moxue.api;
import java.io.UnsupportedEncodingException;
 
public class CryptoUtil {
 private static char[]base64EncodeChars=new char[]{'A','B','C','D',
   'E','F','G','H','I','J','K','L','M','N','O','P','Q',
   'R','S','T','U','V','W','X','Y','Z','a','b','c','d',
   'e','f','g','h','i','j','k','l','m','n','o','p','q',
   'r','s','t','u','v','w','x','y','z','0','1','2','3',
   '4','5','6','7','8','9','+','/'};
 private static byte[]base64DecodeChars=new byte[]{-1,-1,-1,-1,-1,
   -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
   -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
   -1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,
   60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,
   10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,
   -1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,
   38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,
   -1,-1};
  
 // 編碼
  public static String encode(byte[] data) {
 StringBuffer sb = new StringBuffer();
 int len = data.length;
 int i = 0;
 int b1, b2, b3;
 while (i < len) {
 b1 = data[i++] & 0xff;
 if (i == len) {
 sb.append(base64EncodeChars[b1 >>> 2]);
 sb.append(base64EncodeChars[(b1 & 0x3) << 4]);
 sb.append("==");
 break;
 }  
 b2 = data[i++] & 0xff;
 if (i == len) {
 sb.append(base64EncodeChars[b1 >>> 2]);
 sb.append(base64EncodeChars[((b1 & 0x03) << 4)
 | ((b2 & 0xf0) >>> 4)]);
 sb.append(base64EncodeChars[(b2 & 0x0f) << 2]);
 sb.append("=");
 break;
 }  
 b3 = data[i++] & 0xff;
 sb.append(base64EncodeChars[b1 >>> 2]);
 sb.append(base64EncodeChars[((b1 & 0x03) << 4)
 | ((b2 & 0xf0) >>> 4)]);
 sb.append(base64EncodeChars[((b2 & 0x0f) << 2)
 | ((b3 & 0xc0) >>> 6)]);
 sb.append(base64EncodeChars[b3 & 0x3f]);
 }  
  return sb.toString();
 }  
 // 解碼
  public static byte[] decode(String str) throws UnsupportedEncodingException {
  StringBuffer sb = new StringBuffer();
  byte[] data = str.getBytes("US-ASCII");
  int len = data.length;
  int i = 0;
  int b1, b2, b3, b4;
  while (i < len) {
   /* b1 */
  do {
  b1 = base64DecodeChars[data[i++]];
  } while (i < len && b1 == -1);
  if (b1 == -1)
  break;
  /* b2 */
  do {
  b2 = base64DecodeChars[data[i++]];  
  } while (i < len && b2 == -1);
  if (b2 == -1)
  break;
  sb.append((char) ((b1 << 2) | ((b2 & 0x30) >>> 4)));
  /* b3 */
  do {
  b3 = data[i++];
  if (b3 == 61)
  return sb.toString().getBytes("iso8859-1");
  b3 = base64DecodeChars[b3];  
  } while (i < len && b3 == -1);
  if (b3 == -1)
  break;
  sb.append((char) (((b2 & 0x0f) << 4) | ((b3 & 0x3c) >>> 2)));
  /* b4 */
  do {
  b4 = data[i++];  
  if (b4 == 61)
  return sb.toString().getBytes("iso8859-1");
  b4 = base64DecodeChars[b4];  
  } while (i < len && b4 == -1);
  if (b4 == -1)
  break;
  sb.append((char) (((b3 & 0x03) << 6) | b4));
  }  
  return sb.toString().getBytes("iso8859-1");
  }  
 
}
 
 
 
這段代碼可以也可以在Android客戶端重用,Android端負責加密碼,而XFire服務器端負責解密,這樣做是為了安全性著想。


 

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多