У меня проблема с шифрованием данных с использованием AES-128 / ecb / PKCS5Padding + base64.Я использую следующий код для шифрования своих данных:
String input = "{\"action\":\"getQuestion\"}";
String key = "4288f0b8060ca1b682bf795f2617cfdc";
byte[] data = input.getBytes();
byte[] encrypted = null;
byte[] keyBytes = new BigInteger(key, 16).toByteArray();
SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, keySpec);
encrypted = cipher.doFinal(data);
System.out.println(Base64.encodeBytes(encrypted));
Я получаю 6GuKXA6FFR+yMmO8ksAEOLL5e574a5tLob7tt5IG+jk=
после шифрования, но не могу расшифровать на сервере с помощью функции PHP.
Когда я шифруюэти данные с помощью функции PHP:
function encrypt($encrypt, $key=null)
{
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB), MCRYPT_RAND);
$encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $encrypt, MCRYPT_MODE_ECB, $iv));
return $encrypted;
}
Я получаю 6Wc3LPWvfJ7T86iG0igmdQaeZ8xs9qY419mAVWfNH+M=
, и я могу успешно выполнить расшифровку, используя следующую функцию PHP:
function decrypt($decrypt, $key=null)
{
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB), MCRYPT_RAND);
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, base64_decode($decrypt), MCRYPT_MODE_ECB, $iv);
return $decrypted;
}
При использовании шифрования и дешифрования base64 существуютНет проблем;Эта проблема возникает только при шифровании с использованием AES-128.