加签:
- Random random = new Random();
- int rannum = (int) (random.nextDouble() * (99999 - 10000 + 1)) + 10000;//5位随即数
- String nonce = rannum + "";
- String signature = HMACSHA1Util.getHmacSHA1(createtime+nonce, appKey);//appKey =公共密钥
- String smsUrl="http://"+sjyUrl+":"+sjyPort+"}/rest/sendMessage?appid="+appId+"×tamp="+createtime+"&nonce="+nonce+"&signature="+signature;
-
-
-
解签
- String timestamp = map != null ? (String)map.get("timestamp") : null;//验签参数(时间戳)
- String nonce = map != null ? (String)map.get("nonce") : null;//验签参数(随机数)
- String sjySignature = map != null ? (String)map.get("signature") : null;//验签参数(签名)
- String mySignature=HMACSHA1Util.getHmacSHA1(timestamp + nonce, appKey);
工具类
- package com.paic.umap.ucm.common.utils;
-
- import java.io.UnsupportedEncodingException;
- import java.net.URLEncoder;
- import java.security.InvalidKeyException;
- import java.security.NoSuchAlgorithmException;
-
- import javax.crypto.Mac;
- import javax.crypto.spec.SecretKeySpec;
-
- import sun.misc.BASE64Encoder;
-
- public class HMACSHA1Util {
- /**
- * HMAC-SHA1签名
- *
- * @param message
- * @param key
- * @return
- */
- public static String getHmacSHA1(String message, String key) {
- String hmacSha1 = null;
- try {
- // url encode
- message = URLEncoder.encode(message, "UTF-8");
- // hmac-sha1加密
- Mac mac = Mac.getInstance("HmacSHA1");
- SecretKeySpec spec = new SecretKeySpec(key.getBytes(), "HmacSHA1");
- mac.init(spec);
- byte[] byteHMAC = mac.doFinal(message.getBytes());
- // base64 encode
- hmacSha1 = new BASE64Encoder().encode(byteHMAC);
- } catch (NoSuchAlgorithmException e) {
- } catch (InvalidKeyException e) {
- } catch (UnsupportedEncodingException e) {
- }
- return hmacSha1;
- }
-
- }