当前位置:首页 > PHP

java 实现php hashhmac

2026-02-16 02:43:47PHP

在 Java 中实现 PHP 的 hash_hmac

要在 Java 中实现 PHP 的 hash_hmac 功能,可以使用 Java 的加密库来生成 HMAC(Hash-based Message Authentication Code)。以下是一个完整的实现方法。

导入必要的库

确保项目中包含 Java 的标准加密库:

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;

实现 HMAC 生成

以下是一个通用的方法,用于生成 HMAC,支持多种哈希算法(如 SHA-256、SHA-1、MD5 等):

public static String hashHmac(String algorithm, String data, String key) {
    try {
        SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), algorithm);
        Mac mac = Mac.getInstance(algorithm);
        mac.init(secretKey);
        byte[] rawHmac = mac.doFinal(data.getBytes());
        return Base64.getEncoder().encodeToString(rawHmac);
    } catch (NoSuchAlgorithmException | InvalidKeyException e) {
        throw new RuntimeException("Failed to generate HMAC", e);
    }
}

调用示例

如果需要生成 SHA-256 的 HMAC:

String data = "message";
String key = "secret";
String hmacSha256 = hashHmac("HmacSHA256", data, key);
System.out.println("HMAC-SHA256: " + hmacSha256);

如果需要生成十六进制格式的 HMAC(类似于 PHP 的 hash_hmac 默认输出):

public static String hashHmacHex(String algorithm, String data, String key) {
    try {
        SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), algorithm);
        Mac mac = Mac.getInstance(algorithm);
        mac.init(secretKey);
        byte[] rawHmac = mac.doFinal(data.getBytes());
        StringBuilder hexString = new StringBuilder();
        for (byte b : rawHmac) {
            hexString.append(String.format("%02x", b));
        }
        return hexString.toString();
    } catch (NoSuchAlgorithmException | InvalidKeyException e) {
        throw new RuntimeException("Failed to generate HMAC", e);
    }
}

支持的算法列表

Java 支持的 HMAC 算法包括:

java 实现php hashhmac

  • HmacSHA256
  • HmacSHA1
  • HmacSHA512
  • HmacMD5

根据需求选择合适的算法即可。

标签: javaphp
分享给朋友:

相关文章

java如何安装

java如何安装

安装Java的步骤 下载Java开发工具包(JDK) 访问Oracle官方网站或OpenJDK项目页面下载适合操作系统的JDK版本。Oracle JDK适用于商业用途,OpenJDK是开源版本。选择…

php 队列的实现

php 队列的实现

PHP 队列的实现方法 使用数据库实现队列 创建一个数据表存储队列任务,包含任务ID、状态、创建时间等字段。通过SQL语句实现任务的入队和出队操作。 // 入队操作 INSERT INTO queu…

php 实现mvc

php 实现mvc

PHP 实现 MVC 架构的方法 MVC(Model-View-Controller)是一种常见的软件设计模式,用于分离业务逻辑、用户界面和用户输入。以下是 PHP 实现 MVC 架构的关键步骤:…

php 实现锁

php 实现锁

PHP 实现锁的常见方法 文件锁(flock) 利用 flock 函数对文件进行独占锁定,适用于单机环境。 $fp = fopen("lockfile.lock", "w+"); if (flock…

php下载文件实现

php下载文件实现

PHP 下载文件实现方法 使用 header() 函数强制下载 设置合适的 HTTP 头信息,强制浏览器下载文件而非直接打开。 $file_path = '/path/to/file.pdf'; $…

如何启用java

如何启用java

启用 Java 的方法 检查 Java 是否已安装 在命令行或终端输入 java -version,如果显示版本信息,说明 Java 已安装。若未安装,需从 Oracle 官网 或 OpenJDK 下…