01 NET 加密版本
|
/** * 生成签名数据 * * @param sourceData 数据源 * @param secretKey 密匙 * * returns 签名后数据 */ private string HmacSha1(string sourceData, string secretKey) { HMAC hmac = HMACSHA1.Create(); hmac.Key = Encoding.UTF8.GetBytes(secretKey); var result = hmac.ComputeHash(Encoding.UTF8.GetBytes(sourceData)); return Convert.ToBase64String(result).TrimEnd('=').Replace("+", "-").Replace("/", "_"); } |
02 PHP 加密版本
|
/** * 生成签名数据 * * @param sourceData 待加密的数据源 * @param secretKey 密匙 * * return 签名后数据 */ function HmacSha1($sourceJson, $secretKey) { $signature = base64_encode((hash_hmac("sha1",$sourceJson, $secretKey, true))); $signature = str_replace(array('+','/','='),array('-','_',''),$signature); return $signature; } |
03 JAVA 加密版本
|
import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64; /** * 生成签名数据 * * @param sourceData 待加密的数据源 * @param secretKey 密匙 * * return 签名后数据 */ public static String getSignature(String sourceData,String secretKey) throws Exception{ byte[] keyBytes = secretKey.getBytes(); SecretKeySpec signingKey = new SecretKeySpec(keyBytes, "HmacSHA1"); Mac mac = Mac.getInstance("HmacSHA1"); mac.init(signingKey); byte[] rawHmac = mac.doFinal(sourceData.getBytes("UTF8")); String result = Base64.encodeBase64URLSafeString(rawHmac); return result; } |
04 Python 加密版本
|
import hashlib import base64 import hmac /** * 生成签名数据 * * @param sourceData 待加密的数据源 * @param secretKey 密匙 * * return 签名后数据 */ def HmacSha1(source_json, app_key): signature = base64.urlsafe_b64encode(hmac.new(app_key, source_json, hashlib.sha1).digest()) signature = signature.replace('=', '') return signature |