欢迎来到DIVCSS5查找CSS资料与学习DIV CSS布局技术!
  在做微信接口开发的过程中,有时候发现会提示签名校验失败,一模一样的签名逻辑就是有些接口跑步通,找了一圈发现挺坑的;
 
  原来是有些接口的signType签名类型有区别,有些接口signType要求是MD5,有的要求是HMAC-SHA256,其实这两种算法都是
 
  hash算法的一种没有太大的差别,但是生成的签名结果会不一样;
 
  下面附上HMAC-SHA256算法代码
 
  packagecom.lh.micro.datasource.util;
 
  importjavax.crypto.Mac;
 
  importjavax.crypto.spec.SecretKeySpec;
 
  publicclassHMACSHA256{
 
  /**
 
  *将加密后的字节数组转换成字符串
 
  *
 
  *@paramb字节数组
 
  *@return字符串
 
  */
 
  publicstaticStringbyteArrayToHexString(byte[]b){
 
  StringBuilderhs=newStringBuilder();
 
  Stringstmp;
 
  for(intn=0;b!=null&&n<b.length;n++){
 
  stmp=Integer.toHexString(b[n]&0XFF);
 
  if(stmp.length()==1)
 
  hs.append('0');
 
  hs.append(stmp);
 
  }
 
  returnhs.toString().toLowerCase();
 
  }
 
  /**
 
  *sha256_HMAC加密
 
  *@parammessage消息
 
  *@paramsecret秘钥
 
  *@return加密后字符串
 
  */
 
  publicstaticStringsha256_HMAC(Stringmessage,Stringsecret){
 
  Stringhash="";
 
  try{
 
  Macsha256_HMAC=Mac.getInstance("HmacSHA256");
 
  SecretKeySpecsecret_key=newSecretKeySpec(secret.getBytes(),"HmacSHA256");
 
  sha256_HMAC.init(secret_key);
 
  byte[]bytes=sha256_HMAC.doFinal(message.getBytes());
 
  hash=byteArrayToHexString(bytes);
 
  }catch(Exceptione){
 
  System.out.println("ErrorHmacSHA256==========="+e.getMessage());
 
  }
 
  returnhash;
 
  }
 
  }
 
  历史文章:
 
  JAVA微信企业付款到零钱(十分钟搞定)
 
  微信授权获取用户openId的方法和步骤
 
  一个微信号同时支持多个环境网页授权
 
  微信两种签名算法MD5和HMAC-SHA256

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h56455.shtml