package com.kitty.poclient.util; import java.io.UnsupportedEncodingException; import java.net.UnknownHostException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.util.Map; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; /** * @ClassName:SignaturGenUtil * @Description:ǩ���㷨 * @author Mark * @date 2012-1-5 ����11:27:25 */ public class SignaturGenUtil { /** * @Title: generator * @Description: ���ǩ���㷨 * @param @param pStringToSign * @param @param pKey * @param @return * @return String * @throws */ public static String generator(String pStringToSign, String pKey) { String lSignature = "None"; try { Mac lMac = Mac.getInstance("HmacSHA1"); SecretKeySpec lSecret = new SecretKeySpec(pKey.getBytes(), "HmacSHA1"); lMac.init(lSecret); byte[] lDigest = lMac.doFinal(pStringToSign.getBytes()); lSignature = new String(Base64Util.encode(lDigest)); } catch (NoSuchAlgorithmException lEx) { throw new RuntimeException("Problems calculating HMAC", lEx); } catch (InvalidKeyException lEx) { throw new RuntimeException("Problems calculating HMAC", lEx); } return lSignature; } public static String generator(String pStringToSign) throws UnknownHostException { return generator(pStringToSign,GUIDGenUtil.generate(false, true)); } /** * @Title: getRequestUrl * @Description: ��ÿͻ��������url * @param @param url * @param @param params * @param @return * @return String * @throws */ public static String createurl(String url, Map<String, Object> params,String devicekey) { StringBuffer sb = new StringBuffer(url); String paramurl=""; try { paramurl = MapUtil.getUrlFromMap(MapUtil.filter(params,"")); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); }//���ȥ��ǩ��IJ��� String pStringToSign = StringUtil.StringFilter(paramurl);//ȥ�������е������ַ� String sign_url = "&signature=" + SignaturGenUtil.generator(pStringToSign, devicekey);// ���ǩ�� sb.append("?").append(paramurl).append(sign_url); return sb.toString(); } }