直接上代码

1、Utils类,包括签名和随机字符串

import java.util.Random;import javax.crypto.Mac;import javax.crypto.spec.SecretKeySpec;/** *  * @author mrlixirong * * 2011-11-16 */public class Utils {//签名public static String getSignature(String baseString,String key){String returnStr="";Mac mac = null;byte[] byteHMAC = null;try {mac = Mac.getInstance("HmacSHA1");SecretKeySpec spec = new SecretKeySpec(key.getBytes(), "HmacSHA1");mac.init(spec);byteHMAC = mac.doFinal(baseString.getBytes());returnStr = Base64Encoder.encode(byteHMAC);//returnStr=URLEncoder.encode(returnStr,ENCODING);} catch (Exception e1) {returnStr="error";e1.printStackTrace();}return returnStr;}/* * 获取随机字符串 * 实现方法很多,也很简单,但是对这种简单的东西,开发者有时候就是不想去敲键盘 * 但是不敲就做不下去,本来在此愿意成全和我一样有此烦恼的开发者 */public static String getRandomString(int len){String returnStr="";char[] ch=new char[len];Random rd=new Random();for(int i=0;i<len;i++){ch[i]=(char)(rd.nextInt(9)+97);}returnStr=new String(ch);return returnStr;}}


2、Base64Encoder

public class Base64Encoder {    private static final char last2byte = (char) Integer.parseInt("00000011", 2);    private static final char last4byte = (char) Integer.parseInt("00001111", 2);    private static final char last6byte = (char) Integer.parseInt("00111111", 2);    private static final char lead6byte = (char) Integer.parseInt("11111100", 2);    private static final char lead4byte = (char) Integer.parseInt("11110000", 2);    private static final char lead2byte = (char) Integer.parseInt("11000000", 2);    private static final char[] encodeTable = 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', '+', '/'};    public static String encode(byte[] from) {        StringBuffer to = new StringBuffer((int) (from.length * 1.34) + 3);        int num = 0;        char currentByte = 0;        for (int i = 0; i < from.length; i++) {            num = num % 8;            while (num < 8) {                switch (num) {                    case 0:                        currentByte = (char) (from[i] & lead6byte);                        currentByte = (char) (currentByte >>> 2);                        break;                    case 2:                        currentByte = (char) (from[i] & last6byte);                        break;                    case 4:                        currentByte = (char) (from[i] & last4byte);                        currentByte = (char) (currentByte << 2);                        if ((i + 1) < from.length) {                            currentByte |= (from[i + 1] & lead2byte) >>> 6;                        }                        break;                    case 6:                        currentByte = (char) (from[i] & last2byte);                        currentByte = (char) (currentByte << 4);                        if ((i + 1) < from.length) {                            currentByte |= (from[i + 1] & lead4byte) >>> 4;                        }                        break;                }                to.append(encodeTable[currentByte]);                num += 6;            }        }        if (to.length() % 4 != 0) {            for (int i = 4 - to.length() % 4; i > 0; i--) {                to.append("=");            }        }        return to.toString();    }}


项目源代码:http://download.csdn.net/detail/mrlixirong/3804385

更多相关文章

  1. Android(安卓)studio3.x 多渠道打包apk
  2. 第一章 andriod studio 安装与环境搭建
  3. android用户界面-组件Widget-画廊视图Gallery
  4. Android开发者实用代码片段 与大家分享
  5. 【Android(安卓)volley】Android库Volley的使用介绍
  6. android 中使用TextView实现分段显示不同颜色的字符串
  7. exp: 修改Android中strings.xml文件, 动态改变数据
  8. Android(安卓)编程下通过 zipalign 对 APK 文件进行优化
  9. Android(安卓)中数据库查询方法 query() 中的 select

随机推荐

  1. 全屏显示布局随机图片的显示
  2. 记录app端嵌入式H5页面
  3. 备忘录
  4. 开源项目Universal Image Loader for And
  5. android判断模拟器的三种方法
  6. android的内存监控
  7. android的第一个程序helloworld (有图有真
  8. Android执行文件apk的组成结构
  9. android 根据滑动隐藏或显示导航 类似手
  10. android studio打开旧项目遇到build.grad