企业微信JS-SDK使用权限签名算法附实现源码

最近做了一个企业微信接入的项目,JS-SDK使用权限签名算法附源码,觉得有用记得点赞转发,感谢!

  /*---生成验签规则开始------*/
    @Autowired
    EnterWeChatView enterWeChatView;//自定义类获取properties里面的参数

    public Map<String, String> makeWXTicket(String url) {
   
        String jsApiTicket = null;
        try {
   
            jsApiTicket = this.ewJsSdk();
            Map<String, String> ret = new HashMap<String, String>();
            String timestamp = createTimestamp();
            /*-----------------------*/
            Map<String, String> params = new HashMap<String, String>();
            params.put("jsapi_ticket", jsApiTicket);
            params.put("noncestr", getSign());
            params.put("timestamp", timestamp);
            params.put("url", url);
            //1.1 对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)
            Map<String, String> sortParams = sortAsc(params);
            //1.2 使用URL键值对的格式拼接成字符串
            String str = mapJoin(sortParams, false);

            // 获取指定摘要算法的messageDigest对象
            MessageDigest messageDigest = null; // 此处的sha代表sha1
            try {
   
                messageDigest = MessageDigest.getInstance("SHA");
            } catch (NoSuchAlgorithmException e) {
   
                e.printStackTrace();
            }

            // 调用digest方法,进行加密操作
            byte[] cipherBytes = messageDigest.digest(str.getBytes());

            String cipherStr = Hex.encodeHexString(cipherBytes);
            System.out.println(cipherStr);
            ret.put("appId", enterWeChatView.getCorpid());
            ret.put("timestamp", timestamp);
            ret.put("noncestr", getSign());
            ret.put("signature", cipherStr);
            /*-----------------------*/
            return ret;
        } catch (Exception e) {
   
            e.printStackTrace();
        }
        return null;
    }
    private HashMap<String, String> sortAsc(Map<String, String> map) {
   
        HashMap<String, String> tempMap = new LinkedHashMap
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值