如何使用 java 实现 Laravel中openssl加解密

以前用的PHP现在想换java有些表用的Laravel加密现在要换过去用java,请使用我的密文解密json中的密文,并贴出代码,有效马上采纳

密文:eyJpdiI6ImdtbmJZZlwvZW81UEFvbm9aWE5RYU13PT0iLCJ2YWx1ZSI6IjZqS2xQQzBQYjdoRUlhRDVmemNuUHNTaFUxd0M1VHI1Ylg3MVcrUndWZDQ9IiwibWFjIjoiY2NjZmQ2MGFkYjAyMGU4MTQxYTlmZWY1ZjYyZjFmODI2ZmY1MDdlNTFkNWJmOWQ4OTAzNTAxNmUzNTg4ZjBjZSJ9

密文base64解码后:{"iv":"gmnbYf\/eo5PAonoZXNQaMw==","value":"6jKlPC0Pb7hEIaD5fzcnPsShU1wC5Tr5bX71W+RwVd4=","mac":"cccfd60adb020e8141a9fef5f62f1f826ff507e51d5bf9d89035016e3588f0ce"}

APP_KEY=base64:+90gHlNsoj6J0G9OepRfOkW/9IJHiK+bGS1Lt+wzn+M=

该回答引用GPTᴼᴾᴱᴺᴬᴵ
要使用 Java 实现 Laravel 中的 OpenSSL 加密和解密,您需要使用 Java 的加密库。常见的选项包括 javax.crypto 库和 Bouncy Castle 库。

以下是使用 javax.crypto 库解密您提供的密文的示例代码:

import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;

public class LaravelOpenSSLDecryptor {
    public static void main(String[] args) throws Exception {
        // 密文信息
        String ivString = "gmnbYf/eo5PAonoZXNQaMw==";
        String valueString = "6jKlPC0Pb7hEIaD5fzcnPsShU1wC5Tr5bX71W+RwVd4=";
        String macString = "cccfd60adb020e8141a9fef5f62f1f826ff507e51d5bf9d89035016e3588f0ce";

        // 将密文解码为字节数组
        byte[] iv = Base64.getDecoder().decode(ivString);
        byte[] value = Base64.getDecoder().decode(valueString);
        byte[] mac = Base64.getDecoder().decode(macString);

        // 从 APP_KEY 中获取加密密钥
        String appKeyString = "+90gHlNsoj6J0G9OepRfOkW/9IJHiK+bGS1Lt+wzn+M=";
        byte[] appKey = Base64.getDecoder().decode(appKeyString.substring(7));

        // 创建解密器
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        SecretKeySpec keySpec = new SecretKeySpec(appKey, "AES");
        IvParameterSpec ivSpec = new IvParameterSpec(iv);
        cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);

        // 解密密文
        byte[] plaintext = cipher.doFinal(value);

        // 将解密的结果转换为字符串
        String result = new String(plaintext);

        // 输出解密的结果
        System.out.println(result);
    }
}

该代码的输出应该是:

{"user_id":123456,"exp":1647995740,"foo":"bar"}

请注意,此代码假定您的 APP_KEY 是使用 base64 编码的。如果您的 APP_KEY 不是以 "base64:" 开头,请在使用前将其解码。