openssl_在java中加密256个CBC原始_数据

openssl_在java中加密256个CBC原始_数据,java,php,encryption,Java,Php,Encryption,我尝试用Java6中的openssl原始数据对aes-256-cbc进行PHP openssl加密,但没有成功。我找到了一些关于这方面的话题,但我成功地在aes-128-cbc中实现了这一点,没有原始数据。关于这一点,我发现最好的话题是: 但是原始数据不起作用,256位密钥是随机生成的。 事实上,Php版本是: 我实际上有这样一个: publicstaticvoidmain(字符串[]args){ 试一试{ //128位密钥 openssl_加密(“你好”、“bbbbbbbbbbbbbb”、

我尝试用Java6中的openssl原始数据对aes-256-cbc进行PHP openssl加密,但没有成功。我找到了一些关于这方面的话题,但我成功地在aes-128-cbc中实现了这一点,没有原始数据。关于这一点,我发现最好的话题是: 但是原始数据不起作用,256位密钥是随机生成的。 事实上,Php版本是:


我实际上有这样一个:

publicstaticvoidmain(字符串[]args){
试一试{
//128位密钥
openssl_加密(“你好”、“bbbbbbbbbbbbbb”、“aaaaaaaaaaaaaaaa”);
}捕获(例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
私有静态字符串openssl_encrypt(字符串数据、字符串strKey、字符串strIv)引发异常{
Base64 Base64=新的Base64();
Cipher ciper=Cipher.getInstance(“AES/CBC/PKCS5Padding”);
SecretKeySpec key=新的SecretKeySpec(strKey.getBytes(“UTF-8”),“AES”);
IvParameterSpec iv=新的IvParameterSpec(strIv.getBytes(“UTF-8”),0,ciper.getBlockSize();
//加密
ciper.init(Cipher.ENCRYPT_模式,密钥,iv);
byte[]encryptedCiperBytes=base64.encode((ciper.doFinal(data.getBytes()));
字符串s=新字符串(加密的密码字节);
System.out.println(“密码:+s”);
返回s;
}

经过几次修改和测试后,我发现:

private static String openssl\u encrypt(字符串数据、字符串strKey、字符串strIv)引发异常{
Base64 Base64=新的Base64();
Cipher ciper=Cipher.getInstance(“AES/CBC/PKCS5Padding”);
SecretKeySpec key=新的SecretKeySpec(strKey.getBytes(),“AES”);
IvParameterSpec iv=新的IvParameterSpec(strIv.getBytes(),0,ciper.getBlockSize());
//加密
ciper.init(Cipher.ENCRYPT_模式,密钥,iv);
byte[]encryptedCiperBytes=ciper.doFinal(data.getBytes());
字符串s=新字符串(加密的密码字节);
System.out.println(“密码:+s”);
返回s;
}
PHP中的openssl_encrypt不会在base64中转换其结果,而且我还使用了getBytes()而不使用param,因为对于某些密钥,我在密钥的lentgh上有一个错误

因此,这种方法的作用与:


经过几次修改和测试后,我发现:

private static String openssl\u encrypt(字符串数据、字符串strKey、字符串strIv)引发异常{
Base64 Base64=新的Base64();
Cipher ciper=Cipher.getInstance(“AES/CBC/PKCS5Padding”);
SecretKeySpec key=新的SecretKeySpec(strKey.getBytes(),“AES”);
IvParameterSpec iv=新的IvParameterSpec(strIv.getBytes(),0,ciper.getBlockSize());
//加密
ciper.init(Cipher.ENCRYPT_模式,密钥,iv);
byte[]encryptedCiperBytes=ciper.doFinal(data.getBytes());
字符串s=新字符串(加密的密码字节);
System.out.println(“密码:+s”);
返回s;
}
PHP中的openssl_encrypt不会在base64中转换其结果,而且我还使用了getBytes()而不使用param,因为对于某些密钥,我在密钥的lentgh上有一个错误

因此,这种方法的作用与:



在Java 6中,要使用256位密钥,您需要替换SDK中的2个文件:US_export_policy.jar和local_policy.jar,位于“jdkXXX/jre/lib/security/”中,您可以下载要替换的文件,地址如下:在Java 6中,要使用256位密钥,您需要替换SDK中的2个文件:US_export_policy.jar和local_policy.jar“jdkXXX/jre/lib/security/”,您可以在此地址下载要替换的文件:我正在使用以下PHP函数-我正在使用以下PHP函数-
<?php>
    openssl_encrypt(data, "aes-256-cbc", key, OPENSSL_RAW_DATA, iv);
?>