PHP代码:
class TestController
{
public function php_openssl_encrypt($data,$pwd,$iv)
{
//下面两种方式得到字符串是一样的
return openssl_encrypt($data, 'aes-256-cbc', $pwd, 0, $iv);
// return base64_encode(openssl_encrypt($data, 'aes-256-cbc', $pwd, OPENSSL_RAW_DATA, $iv));
}
public function main()
{
$str = $this->php_openssl_encrypt('my_data','my_password','1234567890123456');
//输出: uD1WB/3VZH+zEObhVxdQvA==
echo $str;
}
}
Java代码:
package main.java.com.leon.channel.command;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
public class Main {
public static void main(String[] args) {
String data = "my_data";
String passwrod = "my_password";
String iv = "1234567890123456";
try {
String base64Str = java_openssl_encrypt(data, passwrod, iv);
//输出: uD1WB/3VZH+zEObhVxdQvA==
System.out.print(base64Str);
} catch (Exception e) {
e.printStackTrace();
}
}
public static String java_openssl_encrypt(String data, String password, String iv) throws Exception {
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("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(key, "AES"),
new IvParameterSpec(iv.getBytes()));
String base64Str = Base64.getEncoder().encodeToString(cipher.doFinal(data.getBytes()));
return base64Str;
}
}
更多推荐
Java 实现PHP的openssl_encrypt()
发布评论