private static final String HMAC_SHA1 = "HmacSHA256";
public static String getSignature(String data, String key) throws Exception {
String s = data.toLowerCase();
Log.d("ZHANG", "getSignature: data=" + s);
byte[] keyBytes = key.getBytes("UTF-8");
SecretKeySpec signingKey = new SecretKeySpec(keyBytes, HMAC_SHA1);
Mac mac = Mac.getInstance(HMAC_SHA1);
mac.init(signingKey);
byte[] rawHmac = mac.doFinal(s.getBytes());
StringBuilder sb = new StringBuilder();
return byte2hex(rawHmac);
}
private static String byte2hex(final byte[] b) {
String hs = "";
String stmp = "";
for (int n = 0; n < b.length; n++) {
// 以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。
stmp = (java.lang.Integer.toHexString(b[n] & 0xFF));
if (stmp.length() == 1) {
hs = hs + "0" + stmp;
} else {
hs = hs + stmp;
}
}
return hs;
}
在与php端联调时注意salt要一直 需要加密的字符串也要一致区分大小写