Java实现HmacSHA256算法进行加密方式
算法描述
HmacSHA256算法是一种基于哈希函数的加密算法,它采用SHA256加密算法和密钥来实现加密。HMAC全称是“Hash-based Message Authentication Code”,即基于哈希函数的消息认证码。它可以用于验证数据的完整性和真实性,避免数据被篡改和伪造。
Java实现
我们可以使用Java的Javax.crypto包来实现HmacSHA256算法的加密。以下是Java实现HmacSHA256算法进行加密方式的完整攻略:
- 导入相关包
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
- 定义加密函数
public String hmacSha256(String message, String secret) throws NoSuchAlgorithmException, InvalidKeyException {
Mac sha256Hmac = Mac.getInstance("HmacSHA256");
SecretKeySpec secretKey = new SecretKeySpec(secret.getBytes(), "HmacSHA256");
sha256Hmac.init(secretKey);
byte[] hmacData = sha256Hmac.doFinal(message.getBytes());
String result = Base64.getEncoder().encodeToString(hmacData);
return result;
}
- 调用加密函数
String message = "Hello World";
String secret = "mySecretKey";
String hmac = hmacSha256(message, secret);
System.out.println("HMAC: " + hmac);
- 运行程序,输出加密结果
HMAC: LPeZbgL1wlgP4G7iTJ6vKGd5H5qMjxDZ1Gj3AbaWyF0=
示例说明
下面是两个示例说明:
示例1:对HTTP请求进行加密
在HTTP请求中,可以使用HmacSHA256算法对请求参数进行加密,以保障请求数据的完整性和真实性。
String secret = "mySecretKey";
String timestamp = "202111051210";
String customerName = "张三";
String message = secret + timestamp + customerName;
String hmac = hmacSha256(message, secret);
String url = "https://api.example.com/v1/customers?name=" + customerName + "×tamp=" + timestamp + "&hmac=" + hmac;
示例2:对文件进行加密
在文件传输过程中,可以使用HmacSHA256算法对文件内容进行加密,以保障文件数据的完整性和真实性。
import java.io.FileInputStream;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
public class HmacSha256File {
public static void main(String[] args) throws NoSuchAlgorithmException, InvalidKeyException, IOException {
String secret = "mySecretKey";
String filePath = "example.pdf";
FileInputStream fis = new FileInputStream(filePath);
Mac sha256Hmac = Mac.getInstance("HmacSHA256");
SecretKeySpec secretKey = new SecretKeySpec(secret.getBytes(), "HmacSHA256");
sha256Hmac.init(secretKey);
byte[] buffer = new byte[1024];
int len = 0;
while ((len = fis.read(buffer)) != -1) {
sha256Hmac.update(buffer, 0, len);
}
byte[] hmacData = sha256Hmac.doFinal();
String hmac = Base64.getEncoder().encodeToString(hmacData);
System.out.println("HMAC: " + hmac);
fis.close();
}
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现HmacSHA256算法进行加密方式 - Python技术站