zoukankan      html  css  js  c++  java
  • 企业微信-签名算法

    package com.xc.xcspringboot.demo;
    
    import java.nio.charset.StandardCharsets;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    import java.util.Formatter;
    
    /**
     * https://work.weixin.qq.com/api/doc/90000/90136/90506
     *
     * @author tl19638
     * @date 2020/8/18
     */
    public class 签名算法 {
    
        public static void main(String[] args) throws Exception {
            String genNonce = genNonce();
            System.out.println("noncestr:" + genNonce);
    
            long timestamp = System.currentTimeMillis() / 1000;
            System.out.println("timestamp:" + timestamp);
    
            String sign = sign("https://www.sogou.com", genNonce, timestamp, "eaed581b260d754b1adf54d7875adc27");
            System.out.println("sign:" + sign);
        }
    
    
        /**
         * 模拟生成随机 nonce 字符串
         *
         * @return 随机字符串
         */
        private static String genNonce() {
            return bytesToHex(Long.toString(System.nanoTime()).getBytes(StandardCharsets.UTF_8));
        }
    
        private static String bytesToHex(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 sign(String url, String nonce, Long timestamp, String ticket) throws Exception {
            String plain = String.format("jsapi_ticket=%s&noncestr=%s&timestamp=%d&url=%s", ticket, nonce, timestamp, url);
            System.out.println("plain:" + plain);
            try {
                MessageDigest sha1 = MessageDigest.getInstance("SHA-1");
                sha1.reset();
                sha1.update(plain.getBytes(StandardCharsets.UTF_8));
                return bytesToHex(sha1.digest());
            } catch (NoSuchAlgorithmException e) {
                // throw new LeysenException("jsapi_ticket计算签名错误");
                throw new Exception("jsapi_ticket计算签名错误");
            }
        }
    
    
    }
  • 相关阅读:
    adt 下载有时候下载不下来
    phonegap 2.5.0 创建项目
    jquerymobile tap事件被触发两次。
    phonegap Resource ID #0x0
    淘宝客淘宝开放平台要UTF编码才能获取数据
    js document.addEventListener 注册事件,
    jquerymobile 转场之后不执行onload事件
    我的第一篇博客
    心情
    箭头css
  • 原文地址:https://www.cnblogs.com/ooo0/p/13673907.html
Copyright © 2011-2022 走看看