C#与java兼容的HmacSHA1加密算法
java:
/** * sha1加密 * * @param encryptText 加密文本 * @param encryptKey 加密键 * @return 加密 */ private static String hmacSHA1Encrypt(String encryptText, String encryptKey) throws SignatureException { byte[] rawHmac; try { byte[] data = encryptKey.getBytes(StandardCharsets.UTF_8); SecretKeySpec secretKey = new SecretKeySpec(data, "HmacSHA1"); Mac mac = Mac.getInstance("HmacSHA1"); mac.init(secretKey); byte[] text = encryptText.getBytes(StandardCharsets.UTF_8); rawHmac = mac.doFinal(text); } catch (InvalidKeyException e) { throw new SignatureException("InvalidKeyException:" + e.getMessage()); } catch (NoSuchAlgorithmException e) { throw new SignatureException("NoSuchAlgorithmException:" + e.getMessage()); } return Base64.encode(rawHmac); }
C#:
private static string hmacSHA1Encrypt(string text, string key) { //HMACSHA1加密 HMACSHA1 hmacsha1 = new HMACSHA1(); hmacsha1.Key = System.Text.Encoding.UTF8.GetBytes(key); byte[] dataBuffer = System.Text.Encoding.UTF8.GetBytes(text); byte[] hashBytes = hmacsha1.ComputeHash(dataBuffer); return Convert.ToBase64String(hashBytes); }