编辑代码

import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.util.TreeMap;

/**
 * @author conmind
 */
public class Test {
    public static void main(String[] args) {
        try {
            //需要加密的数据
            String data = "rs1.00RS_VIP4366124567123456788.0564fc865026b76093fa8cae153740af25c8failed1488787";
            //密钥
            String key = "Centili";
            //our(data,key);
            standardSHA1(data, key);

            TreeMap<String, String> urlParams = new TreeMap<String, String>();
            urlParams.put("da","1");
            urlParams.put("za","w");
            urlParams.put("wa","e");
            urlParams.put("fa","10");
            urlParams.put("ca","11");
            urlParams.put("a","12");

            System.out.println("getSignStr = "+getSignStr(urlParams));

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static String getSignStr(TreeMap<String, String> urlParams) {
        String signStr = "";
        for (String key : urlParams.keySet()) {
            String value = urlParams.get(key);
            if (value==null){
                continue;
            }
            signStr += value;
        }
        return signStr;
    }

    private static String standardSHA1(String data, String key) {
        byte[] byteHMAC = null;
        try {
            Mac mac = Mac.getInstance("HmacSHA1");
            SecretKeySpec spec = new SecretKeySpec(key.getBytes(), "HmacSHA1");
            mac.init(spec);
            byteHMAC = mac.doFinal(data.getBytes());
        } catch (InvalidKeyException e) {
            e.printStackTrace();
        } catch (NoSuchAlgorithmException ignore) {
        }
        System.out.println("byteHMAC = "+byteHMAC);
        System.out.println("byte2hex ="+ byte2hex(byteHMAC));
        return byte2hex(byteHMAC);
    }

    //二行制转字符串  
    public static String byte2hex(byte[] b) 
    {
        StringBuilder hs = new StringBuilder();
        String stmp;
        for (int n = 0; b!=null && n < b.length; n++) {
            stmp = Integer.toHexString(b[n] & 0XFF);
            if (stmp.length() == 1)
                hs.append('0');
            hs.append(stmp);
        }
        return hs.toString().toLowerCase();
    }
}