zoukankan      html  css  js  c++  java
  • sha1加密算法

    public static void main(String[] args) throws UnsupportedEncodingException {

    /*
    * 获取jsapi_ticket
    *
    */

    //获取access_token
    String accessTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
    accessTokenUrl = accessTokenUrl.replace("APPID", Configure.appID);
    accessTokenUrl = accessTokenUrl.replace("APPSECRET", Configure.appsecret);
    JSONObject jsonObject = NetTools.httpsRequest(accessTokenUrl, "GET", null);
    // System.out.println("jsonObject---"+jsonObject);
    String accessToken = (String) jsonObject.get("access_token");
    // System.out.println("accessToken---"+accessToken);
    //获取jsapi_ticket
    String jsapiTicketUrl ="https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi";
    jsapiTicketUrl = jsapiTicketUrl.replace("ACCESS_TOKEN", accessToken);
    JSONObject jsapiObject = NetTools.httpsRequest(jsapiTicketUrl, "GET", null);
    Integer errCode = (Integer) jsapiObject.get("errcode");
    // System.out.println("errCode---"+errCode);
    String ticket = (String) jsapiObject.get("ticket");


    WxPaySendData data = new WxPaySendData();
    data.setAppId(Configure.appID);
    System.out.println("time--"+Calendar.getInstance().getTimeInMillis()+"".length());
    String timeStr = Calendar.getInstance().getTimeInMillis()+"";
    timeStr = timeStr.substring(0, 9);
    data.setTimeStamp(timeStr);
    data.setNonceStr(RandomStringGenerator.getRandomStringByLength(16));
    data.setJspUrl("http://dipark.aramark.cn/oosweb/app/wx/recipeOrder/goTo?id=f2d001616b2f403fb13a86af62b61f92");
    data.setJsapiTicket(ticket);
    // String signature = UnifiedorderService.jsapiSign(data);
    System.out.println("ticket---"+ticket);
    System.out.println("nonceStr----"+data.getNonceStr());
    System.out.println("timestamp----"+data.getTimeStamp());

    // System.out.println("signature---"+signature);


    //字典序排序
    HashMap<String,Object> map=new HashMap<String,Object>();

    map.put("jsapi_ticket", data.getJsapiTicket());
    map.put("noncestr", data.getNonceStr());
    map.put("timestamp", data.getTimeStamp());
    map.put("url", data.getJspUrl());


    Collection<String> keyset= map.keySet();

    List<String> list=new ArrayList<String>(keyset);

    Collections.sort(list);
    //这种打印出的字符串顺序和微信官网提供的字典序顺序是一致的
    String detail = "";
    for(int i=0;i<list.size();i++){
    if(i == 0 ){
    detail = list.get(i)+"="+map.get(list.get(i));
    }else{
    detail += "&"+list.get(i)+"="+map.get(list.get(i));
    }


    System.err.println(list.get(i)+"="+map.get(list.get(i)));
    }

    System.err.println("detail--"+detail);
    String s = "jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW&timestamp=1414587457&url=http://mp.weixin.qq.com?params=value";
    String ss = "jsapi_ticket=kgt8ON7yVITDhtdwci0qeVobpUZDYzWPTM3stkoQPWc3AFG-gv46LxoOBqb9JK7cTZYzNDOI9nS-jcW-ppp9yQ&noncestr=sc1b3z71h2fdf3lu&timestamp=1504253434&url=http://dipark.aramark.cn/oosweb/app/wx/recipeOrder/goTo?id=f2d001616b2f403fb13a86af62b61f92";
    System.out.println("detail--"+s);
    System.out.println("s--+"+getSha1(detail));

    }

    public static String getSha1(String str){
    if (null == str || 0 == str.length()){
    return null;
    }
    char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
    'a', 'b', 'c', 'd', 'e', 'f'};
    try {
    MessageDigest mdTemp = MessageDigest.getInstance("SHA1");
    mdTemp.update(str.getBytes("UTF-8"));

    byte[] md = mdTemp.digest();
    int j = md.length;
    char[] buf = new char[j * 2];
    int k = 0;
    for (int i = 0; i < j; i++) {
    byte byte0 = md[i];
    buf[k++] = hexDigits[byte0 >>> 4 & 0xf];
    buf[k++] = hexDigits[byte0 & 0xf];
    }
    return new String(buf);
    } catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
    } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    }

    return null;
    }












  • 相关阅读:
    SSL 1010——方格取数
    SSL 1558——科技庄园
    SSL 2295——暗黑破坏神
    SSL 2294——打包
    SSL 2293——暗黑游戏
    SSL 2305——竞赛总分
    SSL 1072——砝码称重
    SSL 2291——分组背包
    SSL 2290——潜水员
    SSL 2301——混合背包
  • 原文地址:https://www.cnblogs.com/kongxc/p/7463810.html
Copyright © 2011-2022 走看看