我一直在做很多搜索,但找不到足够的解释为什么:
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=
根据我在论坛中阅读的所有内容,他们都应该返回相同的内容。有人可以帮帮我吗?
答案 0 :(得分:2)
您的测试字符串不同。在Java中,你把“这是一个普通的字符串。”。在PHP中,你把“这是一个普通的字符串。”。注意首都'T'。
请调整并重试。