Java tutorial
/** * 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); } }