微信两种签名算法MD5和HMAC-SHA256

匿名 (未验证) 提交于 2019-12-02 23:52:01

在做微信接口开发的过程中, 有时候发现会提示签名校验失败, 一模一样的签名逻辑就是有些接口跑步通, 找了一圈发现挺坑的;

原来是有些接口的signType签名类型有区别, 有些接口signType要求是MD5,有的要求是HMAC-SHA256, 其实这两种算法都是

hash算法的一种没有太大的差别, 但是生成的签名结果会不一样;

下面附上HMAC-SHA256算法代码

package com.lh.micro.datasource.util; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec;  public class HMACSHA256 {       /**      * 将加密后的字节数组转换成字符串      *      * @param b 字节数组      * @return 字符串      */     public  static String byteArrayToHexString(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();     }     /**      * sha256_HMAC加密      * @param message 消息      * @param secret  秘钥      * @return 加密后字符串      */     public static String sha256_HMAC(String message, String secret) {         String hash = "";         try {             Mac sha256_HMAC = Mac.getInstance("HmacSHA256");             SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(), "HmacSHA256");             sha256_HMAC.init(secret_key);             byte[] bytes = sha256_HMAC.doFinal(message.getBytes());             hash = byteArrayToHexString(bytes);         } catch (Exception e) {             System.out.println("Error HmacSHA256 ===========" + e.getMessage());         }         return hash;     }   } 

  

历史文章:
JAVA微信企业付款到零钱(十分钟搞定)
微信授权获取用户openId的方法和步骤
一个微信号同时支持多个环境网页授权
微信两种签名算法MD5和HMAC-SHA256

来源: https://www.cnblogs.com/angryjj/p/11312733.html

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!