Моя проблема: что я шифрую в Java, я могу отлично расшифровать Java, но PHP mcrypt
не может расшифровать. Что я шифрую с помощью mcrypt
Я могу расшифровать с помощью mcrypt
, но не могу в Java.
Я хочу отправить и получить зашифрованные данные из приложения Java на страницу PHP, поэтому мне нужно, чтобы она была совместимой.
Вот что у меня есть...
JAVA...
public static String crypt(String input, String key){
byte[] crypted = null;
try{
SecretKeySpec skey = new SecretKeySpec(Base64.decodeBase64(key), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, skey);
crypted = cipher.doFinal(input.getBytes());
}catch(Exception e){
}
return Base64.encodeBase64String(crypted);
}
public static String decrypt(String input, String key){
byte[] output = null;
try{
SecretKeySpec skey = new SecretKeySpec(Base64.decodeBase64(key), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, skey);
output = cipher.doFinal(Base64.decodeBase64(input));
}catch(Exception e){
}
return new String(output);
}
Продолжительность:
public static void main(String[] args) {
String key = "Zvzpv8/PXbezPCZpxzQKzL/FeoPw68jIb+NONX/LIi8=";
String data = "example";
System.out.println(Cpt.decrypt(Cpt.crypt(data, key), key));
}
Вывод:
example
PHP...
function getEncrypt($sStr, $sKey) {
return base64_encode(
mcrypt_encrypt(
MCRYPT_RIJNDAEL_256,
$sKey,
$sStr,
MCRYPT_MODE_ECB
)
);
}
function getDecrypt($sStr, $sKey) {
return mcrypt_decrypt(
MCRYPT_RIJNDAEL_256,
$sKey,
base64_decode($sStr),
MCRYPT_MODE_ECB
);
}
Продолжительность:
$crypt = getDecrypt(getEncrypt($str, $key), $key);
echo "<p>Crypt: $crypt</p>";
Вывод:
Crypt: example�������������������������
Использование PHP для склеивания "пример" с ключом "Zvzpv8/PXbezPCZpxzQKzL/FeoPw68jIb + NONX/LIi8 =" Я получаю "YTYhgp4zC + w5IsViTR5PUkHMX4i7JzvA6NJT1FqhoGY =". Используя Java для шифрования одной и той же вещи с одним и тем же ключом, я получаю "+ tdAZqTE7WAVPXhB3Tp5 + g ==".
Я кодирую и дешифрую base64 в правильном порядке, и я протестировал base64 кодировать и декодировать совместимость между Java и PHP и работать.