新建一个maven测试项目,直接把代码复制过去就行,把data和secretKey的值替换成想加密的值。
package test;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import org.apache.commons.codec.binary.Base64;
public class testP {
public static String hmacSha1ToBase64(String data, String secretKey) {
try {
// 创建一个HMAC-SHA1密钥
SecretKeySpec signingKey = new SecretKeySpec(secretKey.getBytes(), "HmacSHA1");
// 获得一个Mac对象
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(signingKey);
// 计算HMAC值
byte[] rawHmac = mac.doFinal(data.getBytes());
// 将HMAC值转换成Base64编码
return Base64.encodeBase64String(rawHmac);
} catch (InvalidKeyException | NoSuchAlgorithmException e) {
throw new RuntimeException("获取失败:", e);
}
}
public static void main(String[] args) {
String data = "值1";
String secretKey = "值2";
String encryptedData = hmacSha1ToBase64(data, secretKey);
System.out.println("HMAC-SHA1加Base64输出成功: " + encryptedData);
}
}
如果复制过去import org.apache.commons.codec.binary.Base64;标红可以考虑导入依赖
<dependencies>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.16.1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.14.0</version>
</dependency>
</dependencies>