Java AES CBC Décryptage
PHP Fonction de Crypter
$privateKey = "1234567812345678";
$iv = "1234567812345678";
$data = "Test string";
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $privateKey, $data, MCRYPT_MODE_CBC, $iv);
echo(base64_encode($encrypted));
Result: iz1qFlQJfs6Ycp+gcc2z4w==
Quand j'ai essayer de déchiffrer ce résultat en Java à l'aide de la fonction ci-dessous, tous les je serai de retour est ì�š@ÔBKxnfÈ~Ô SUIS alors que je m'attends à ce que "Test de la chaîne". Des idées où je me trompe? Grâce
public static String decrypt() throws Exception{
try{
String Base64EncodedText = "iz1qFlQJfs6Ycp+gcc2z4w==";
String decodedText = com.sun.xml.internal.messaging.saaj.util.Base64.base64Decode(Base64EncodedText);
String key = "1234567812345678";
String iv = "1234567812345678";
javax.crypto.spec.SecretKeySpec keyspec = new javax.crypto.spec.SecretKeySpec(key.getBytes(), "AES");
javax.crypto.spec.IvParameterSpec ivspec = new javax.crypto.spec.IvParameterSpec(iv.getBytes());
javax.crypto.Cipher cipher = javax.crypto.Cipher.getInstance("AES/CBC/NoPadding");
cipher.init(javax.crypto.Cipher.DECRYPT_MODE, keyspec, ivspec);
byte[] decrypted = cipher.doFinal(decodedText.getBytes());
String str = new String(decrypted);
return str;
}catch(Exception e){
return null;
}
}
double possible de PHP Java AES CBC Cryptage des Résultats Différents
OriginalL'auteur user812120 | 2012-05-31
Vous devez vous connecter pour publier un commentaire.
EDIT: Comme de Java 8 Java inclut maintenant un niveau acceptable en Base64 classe,
java.util.Base64
.Cette ligne
semble incorrect. Au lieu de cela, utilisez la apache commons codec classes ou le Plus difficile en base64 classe. Par défaut également rembourrage utilisé par mcrypt, zéro de remplissage, est sans doute mal et il est difficile d'utiliser les résultats dans d'autres langues. Les utilisateurs de la section des commentaires pour le mcrypt_encrypt pages web a des exemples de comment faire cela.
Voici le petit exemple qui utilise apache commons classes pour décrypter votre chaîne.
ce produit la sortie suivante:
qui quand décodé en ASCII et en supprimant les zéros à droite vous donne
Test string
Merci beaucoup GregS. Très bien expliqué.
Merci. Mais la clé est une chose différente de IV - clonage eux, vous confond tout simplement les lecteurs.
bon point.
OriginalL'auteur James K Polk