微信JS-SDK使用权限签名算法example

来源:互联网 发布:linux svn服务器配置 编辑:程序博客网 时间:2024/05/17 06:33
package wechat.example;import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.Formatter;import java.util.HashMap;import java.util.Map;import java.util.UUID;public class Sign {    public static void main(String[] args) {        String jsapi_ticket = "sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg";        // 注意 URL 一定要动态获取,不能 hardcode        String url = "http://mp.weixin.qq.com?params=value";        Map<String, String> ret = sign(jsapi_ticket, url);        for (Map.Entry<String,String> entry : ret.entrySet()) {            System.out.println(entry.getKey() + ", " + entry.getValue());        }    }    public static Map<String, String> sign(String jsapi_ticket, String url) {        Map<String, String> ret = new HashMap<String, String>();        String nonce_str = create_nonce_str();        String timestamp = create_timestamp();        String string1;        String signature = "";        //注意这里参数名必须全部小写,且必须有序        string1 = "jsapi_ticket=" + jsapi_ticket +                  "&noncestr=" + nonce_str +                  "&timestamp=" + timestamp +                  "&url=" + url;        System.out.println(string1);        try        {            MessageDigest crypt = MessageDigest.getInstance("SHA-1");            crypt.reset();            crypt.update(string1.getBytes("UTF-8"));            signature = byteToHex(crypt.digest());        }        catch (NoSuchAlgorithmException e)        {            e.printStackTrace();        }        catch (UnsupportedEncodingException e)        {            e.printStackTrace();        }        ret.put("url", url);        ret.put("jsapi_ticket", jsapi_ticket);        ret.put("nonceStr", nonce_str);        ret.put("timestamp", timestamp);        ret.put("signature", signature);        return ret;    }    private static String byteToHex(final byte[] hash) {        Formatter formatter = new Formatter();        for (byte b : hash)        {            formatter.format("%02x", b);        }        String result = formatter.toString();        formatter.close();        return result;    }    private static String create_nonce_str() {        //return UUID.randomUUID().toString();        return "Wm3WZYTPz0wzccnW";    }    private static String create_timestamp() {        //return Long.toString(System.currentTimeMillis() / 1000);        return "1414587457";    }}
阅读全文
0 0
原创粉丝点击