JAVA实现base64_encode(openssl_encrypt(“加密的明文数据”,“aes-256-ecb”,“密钥”));
今天再对接PHP的时候遇到的一个小问题。我方加密PHP解密失败导致参数错误。话不多说直接上代码。
感谢敬__
:原版在这里,我这个就是跟原版用的Base64包不一样
如下代码就能解决 PHP中的 base64_encode openssl_encrypt方法加密
import com.chinatower.energy.order.common.Constants.OrderConstants;
import org.apache.commons.codec.binary.Base64;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
/**
* 新快报加密
* @author LS
* @date 2021/07/07 08:35
**/
public class EncryptUtils {
/**
* 加密方法
*/
public final static String CIPHER_ALGO_STR = "AES/ECB/PKCS5Padding";
private EncryptUtils(){}
/**
* javaOpensslEncrypt加密
* @param data
* @param password
* @return
* @throws Exception
*/
public static String javaOpensslEncrypt(String data, String password) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException {
byte[] key = new byte[32];
for (int i = 0; i < 32; i++) {
if (i < password.getBytes().length) {
key[i] = password.getBytes()[i];
} else {
key[i] = 0;
}
}
Cipher cipher = Cipher.getInstance(CIPHER_ALGO_STR);
cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(key, "AES"));
String base64Str = Base64.encodeBase64String(cipher.doFinal(data.getBytes()));
Base64 base64 = new Base64();
return base64.encodeToString(base64Str.getBytes());
}
}