网站不备案可以吗,直播传媒公司排名,json网站开发,创免费网站1.问题 php加密的java不能正常机密#xff0c;java加密的php不能正常解密
2.前置参数 key 32位 iv 16位
3.问题解决 因为key是32位的#xff0c;所以参数需要$methodAES-256-CBC,$options1 4.PHP代码
?php
/**** Created by PhpStorm* User: Noah* Date: 2023/10/10*…1.问题 php加密的java不能正常机密java加密的php不能正常解密
2.前置参数 key 32位 iv 16位
3.问题解决 因为key是32位的所以参数需要$methodAES-256-CBC,$options1 4.PHP代码
?php
/**** Created by PhpStorm* User: Noah* Date: 2023/10/10* Time: 16:35*/namespace app\Service;use support\Log;class Aes
{/*** var string $method 加解密方法可通过openssl_get_cipher_methods()获得*/protected $method;/*** var string $secret_key 加解密的密钥*/protected $secret_key;/*** var string $iv 加解密的向量有些方法需要设置比如CBC*/protected $iv;/*** var string $options 不知道怎么解释目前设置为0没什么问题*/protected $options;/*** 构造函数** param string $key 密钥* param string $method 加密方式* param string $iv iv向量* param mixed $options 还不是很清楚**/public function __construct($key, $iv , $method AES-256-CBC, $options 1){// key是必须要设置的$this-secret_key isset($key) ? $key : morefun;$this-method $method;$this-iv $iv;$this-options $options;}/*** 加密方法对数据进行加密返回加密后的数据** param string $data 要加密的数据** return string**/public function encrypt($data){$result openssl_encrypt($data, $this-method, $this-secret_key, $this-options, $this-iv);$result base64_encode($result);return $result;}/*** 解密方法对数据进行解密返回解密后的数据** param string $data 要解密的数据** return string**/public function decrypt($data){return openssl_decrypt(base64_decode($data), $this-method, $this-secret_key, $this-options, $this-iv);}
}
5.java代码
package com.xxx.cn.utils;import org.apache.commons.codec.binary.Base64;import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;public class Test {public static String encrypt(String secretKey, String iv, String strToEncrypt) {if (strToEncrypt null || strToEncrypt.isEmpty()) {return strToEncrypt;}try {Cipher cipher getCipher(secretKey, iv, Cipher.ENCRYPT_MODE);returnBase64.encodeBase64String(cipher.doFinal(strToEncrypt.getBytes(StandardCharsets.UTF_8)));} catch (Exception exp) {exp.printStackTrace();return ;}}private static Cipher getCipher(String secretKey, String iv, int cipherMode)throws Exception {IvParameterSpec ivSpec new IvParameterSpec(iv.getBytes(StandardCharsets.UTF_8));SecretKeySpec secretKeySpec newSecretKeySpec(secretKey.getBytes(StandardCharsets.UTF_8), AES);Cipher cipher Cipher.getInstance(AES/CBC/PKCS5PADDING);cipher.init(cipherMode, secretKeySpec, ivSpec);return cipher;}public static void main(String[] args) {String s xxxx;System.out.println(encrypt(95D03jGYjs1wTpg0PfKWgyvL2WfLXQ1y, GETwRqKWgqtRO8Ew, s));}}