net.xxs.util.EncodeUtils.java Source code

Java tutorial

Introduction

Here is the source code for net.xxs.util.EncodeUtils.java

Source

/**
 * Copyright (c) 2005-2009 springside.org.cn
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * 
 * $Id: EncodeUtils.java 984 2010-03-21 13:02:44Z calvinxiu $
 */
package net.xxs.util;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.security.SecureRandom;
import java.util.Random;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;

import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.binary.Hex;
import org.apache.commons.lang.StringEscapeUtils;

/**
 * ?????.
 * 
 * ?Commons-Codec,Commons-Lang?JDK???.
 * 
 * @author calvin
 */
public class EncodeUtils {

    private static final String DEFAULT_URL_ENCODING = "UTF-8";

    /**
     * Hex?.
     */
    public static String hexEncode(byte[] input) {
        return Hex.encodeHexString(input);
    }

    /**
     * Hex?.
     */
    public static byte[] hexDecode(String input) {
        try {
            return Hex.decodeHex(input.toCharArray());
        } catch (DecoderException e) {
            throw new IllegalStateException("Hex Decoder exception", e);
        }
    }

    /**
     * Base64?.
     */
    public static String base64Encode(byte[] input) {
        return new String(Base64.encodeBase64(input));
    }

    /**
     * Base64?, URL(Base64URL?+,/=, ?RFC3548).
     */
    public static String base64UrlSafeEncode(byte[] input) {
        return Base64.encodeBase64URLSafeString(input);
    }

    /**
     * Base64?.
     */
    public static byte[] base64Decode(String input) {
        return Base64.decodeBase64(input);
    }

    /**
     * URL ?, EncodeUTF-8.
     */
    public static String urlEncode(String input) {
        return urlEncode(input, DEFAULT_URL_ENCODING);
    }

    /**
     * URL ?.
     */
    public static String urlEncode(String input, String encoding) {
        try {
            return URLEncoder.encode(input, encoding);
        } catch (UnsupportedEncodingException e) {
            throw new IllegalArgumentException("Unsupported Encoding Exception", e);
        }
    }

    /**
     * URL ?, EncodeUTF-8.
     */
    public static String urlDecode(String input) {
        return urlDecode(input, DEFAULT_URL_ENCODING);
    }

    /**
     * URL ?.
     */
    public static String urlDecode(String input, String encoding) {
        try {
            return URLDecoder.decode(input, encoding);
        } catch (UnsupportedEncodingException e) {
            throw new IllegalArgumentException("Unsupported Encoding Exception", e);
        }
    }

    /**
     * Html ?.
     */
    public static String htmlEscape(String html) {
        return StringEscapeUtils.escapeHtml(html);
    }

    /**
     * Html ?.
     */
    public static String htmlUnescape(String htmlEscaped) {
        return StringEscapeUtils.unescapeHtml(htmlEscaped);
    }

    /**
     * Xml ?.
     */
    public static String xmlEscape(String xml) {
        return StringEscapeUtils.escapeXml(xml);
    }

    /**
     * Xml ?.
     */
    public static String xmlUnescape(String xmlEscaped) {
        return StringEscapeUtils.unescapeXml(xmlEscaped);
    }

    /***************************************************************************
     * MD5
     * 
     * @param myinfo
     * @return
     */
    public static String testDigest(String myinfo) {
        byte[] digesta = null;
        try {
            java.security.MessageDigest alga = java.security.MessageDigest.getInstance("MD5");
            alga.update(myinfo.getBytes("gbk"));
            digesta = alga.digest();
        } catch (UnsupportedEncodingException e) {
            System.out.println("-----------------------------------------------");
            System.out.println("MD5??");
            System.out.println("-----------------------------------------------");
        } catch (java.security.NoSuchAlgorithmException ex) {
            System.out.println("-----------------------------------------------");
            System.out.println("MD5??");
            System.out.println("-----------------------------------------------");
        }
        return byte2hex(digesta);
    }

    public static String testDigest(String myinfo, String encode) throws UnsupportedEncodingException {
        byte[] digesta = null;
        try {
            java.security.MessageDigest alga = java.security.MessageDigest.getInstance("MD5");
            alga.update(myinfo.getBytes(encode));
            digesta = alga.digest();

        } catch (java.security.NoSuchAlgorithmException ex) {
            System.out.println("MD5??");
        }
        return byte2hex(digesta);
    }

    public static String byte2hex(byte[] b) {
        String hs = "";
        String stmp = "";
        for (int n = 0; n < b.length; n++) {
            stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
            if (stmp.length() == 1) {
                hs = hs + "0" + stmp;
            } else {
                hs = hs + stmp;
            }
            if (n < b.length - 1) {
                // hs = hs;
            }
        }
        return hs;
    }

    /**
     * ????
     * 
     * @param pwd_len
     *            ??
     * @return ?
     */
    public static String genRandomNum(int pwd_len) {
        // 35026?+10
        final int maxNum = 10;
        int i; // ??
        int count = 0; // ??
        /*
         * char[] str = { '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' };
         */

        char[] str = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };

        StringBuffer pwd = new StringBuffer("");
        Random r = new Random();
        r.setSeed(System.currentTimeMillis());
        while (count < pwd_len) {
            // ?????

            i = Math.abs(r.nextInt(maxNum)); // ?36-1

            if (i >= 0 && i < str.length) {
                pwd.append(str[i]);
                count++;
            }
        }

        return pwd.toString();
    }

    public static void main(String saf[]) {
        String usercodeString = "A672353";
        String pass = "ofcardpay";
        pass = testDigest(pass);
        System.out.println(pass);
        String psw = "c012032ddcee83f8969683f98be51ea6ff55e70dd5320a8a0aeef4a203a36c65";
        String result = testDigest(usercodeString + pass + psw);
        System.out.println(result);
    }

}