admin管理员组

文章数量:1794759

Java 实现PHP的openssl

Java 实现PHP的openssl

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.leon.channelmand; 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; } }

本文标签: javaPHPopenssl