admin
2024-01-23 81da61b828e29b7745e1382dfbbaeb685dc083ef
utils/src/main/java/com/qq/weixin/mp/aes/SHA1.java
@@ -1,61 +1,61 @@
/**
 * 对公众平台发送给公众账号的消息加解密示例代码.
 *
 * @copyright Copyright (c) 1998-2014 Tencent Inc.
 */
// ------------------------------------------------------------------------
package com.qq.weixin.mp.aes;
import java.security.MessageDigest;
import java.util.Arrays;
/**
 * SHA1 class
 *
 * 计算公众平台的消息签名接口.
 */
class SHA1 {
   /**
    * 用SHA1算法生成安全签名
    * @param token 票据
    * @param timestamp 时间戳
    * @param nonce 随机字符串
    * @param encrypt 密文
    * @return 安全签名
    * @throws AesException
    */
   public static String getSHA1(String token, String timestamp, String nonce, String encrypt) throws AesException
           {
      try {
         String[] array = new String[] { token, timestamp, nonce, encrypt };
         StringBuffer sb = new StringBuffer();
         // 字符串排序
         Arrays.sort(array);
         for (int i = 0; i < 4; i++) {
            sb.append(array[i]);
         }
         String str = sb.toString();
         // SHA1签名生成
         MessageDigest md = MessageDigest.getInstance("SHA-1");
         md.update(str.getBytes());
         byte[] digest = md.digest();
         StringBuffer hexstr = new StringBuffer();
         String shaHex = "";
         for (int i = 0; i < digest.length; i++) {
            shaHex = Integer.toHexString(digest[i] & 0xFF);
            if (shaHex.length() < 2) {
               hexstr.append(0);
            }
            hexstr.append(shaHex);
         }
         return hexstr.toString();
      } catch (Exception e) {
         e.printStackTrace();
         throw new AesException(AesException.ComputeSignatureError);
      }
   }
}
/**
 * 对公众平台发送给公众账号的消息加解密示例代码.
 *
 * @copyright Copyright (c) 1998-2014 Tencent Inc.
 */
// ------------------------------------------------------------------------
package com.qq.weixin.mp.aes;
import java.security.MessageDigest;
import java.util.Arrays;
/**
 * SHA1 class
 *
 * 计算公众平台的消息签名接口.
 */
class SHA1 {
   /**
    * 用SHA1算法生成安全签名
    * @param token 票据
    * @param timestamp 时间戳
    * @param nonce 随机字符串
    * @param encrypt 密文
    * @return 安全签名
    * @throws AesException
    */
   public static String getSHA1(String token, String timestamp, String nonce, String encrypt) throws AesException
           {
      try {
         String[] array = new String[] { token, timestamp, nonce, encrypt };
         StringBuffer sb = new StringBuffer();
         // 字符串排序
         Arrays.sort(array);
         for (int i = 0; i < 4; i++) {
            sb.append(array[i]);
         }
         String str = sb.toString();
         // SHA1签名生成
         MessageDigest md = MessageDigest.getInstance("SHA-1");
         md.update(str.getBytes());
         byte[] digest = md.digest();
         StringBuffer hexstr = new StringBuffer();
         String shaHex = "";
         for (int i = 0; i < digest.length; i++) {
            shaHex = Integer.toHexString(digest[i] & 0xFF);
            if (shaHex.length() < 2) {
               hexstr.append(0);
            }
            hexstr.append(shaHex);
         }
         return hexstr.toString();
      } catch (Exception e) {
         e.printStackTrace();
         throw new AesException(AesException.ComputeSignatureError);
      }
   }
}