我做了很多搜索,但找不到适当的解释:
public class encryption_test {
private static final String text_encoding = "UTF-8";
private byte [] byte_array (String input) throws Exception {
return input.getBytes (text_encoding);
}// byte_array;
private byte [] encrypt (String text) throws Exception {
Cipher cypher = Cipher.getInstance ("AES/CBC/PKCS5Padding");
Key key = new SecretKeySpec (byte_array ("12345678123456781234567812345678"), "AES");
cypher.init (Cipher.ENCRYPT_MODE, key, new IvParameterSpec (byte_array ("1234567812345678")));
return cypher.doFinal (byte_array (text));
}// encrypt;
public String doit () throws Exception {
byte [] etext = encrypt ("this is a plain string.");
return new String (Base64.getEncoder ().encode (etext));
}// doit;
}// encryption_test;
在 Java 中,产生:
dAza6vYiYzJ9W/i4zPHVfvA8UUyw8Sq1g2YjuLt3EjI=
鉴于:
base64_encode (mcrypt_encrypt (MCRYPT_RIJNDAEL_128, "12345678123456781234567812345678", "This is a plain string.", MCRYPT_MODE_CBC, "1234567812345678"))
用 PHP 表示:
G+tdEOfQTtVCQGxW3N5uzkqN207OyfIPxS6zf2xrKKY=
根据我在论坛中读到的所有内容,它们都应该返回相同的内容。有人可以帮我吗?
最佳答案
您的测试字符串不同。在Java中,你输入“这是一个纯字符串。”。在 PHP 中,您输入“这是一个纯字符串。”。注意大写“T”。
请调整并重试。
关于java - Java 中的 AES 加密与 PHP 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30792116/