Maison >Java >javaDidacticiel >Quel est le comportement Crypto/AES par défaut de Java sans configuration supplémentaire ?
Le comportement Crypto/AES par défaut de Java dévoilé
Lorsque vous travaillez avec l'API de cryptographie de Java, le comportement des paramètres par défaut pour le cryptage AES peut être un peu énigmatique. Voici une analyse plus approfondie de ce qui se passe :
Question : Quel est le comportement de chiffrement Java par défaut pour les éléments suivants :
<code class="java">SecretKeySpec localSecretKeySpec = new SecretKeySpec(arrayOfByte, "AES"); Cipher localCipher = Cipher.getInstance("AES");</code>
Plus précisément, comment ces classes génèrent-elles le vecteur d'initialisation (IV) et quel est le mode de cryptage par défaut lorsque « AES » est spécifié sans autre précision ?
Réponse :
Pour Oracle JDK 7, le vecteur par défaut Le chiffre utilisé pour le cryptage AES est AES/ECB/PKCS5Padding. Étonnamment, ces informations ne sont pas explicitement indiquées dans la documentation Java Security. Au lieu de cela, cela nécessite quelques tests pratiques pour comprendre :
<code class="java">Cipher cipher = Cipher.getInstance("AES"); System.out.println(cipher.getAlgorithm()); // Outputs: AES/ECB/PKCS5Padding</code>
Dans cette configuration par défaut :
Il est important de noter que même si ce comportement par défaut peut suffire pour les scénarios de base, il n'est généralement pas considéré comme sécurisé pour la plupart des applications en raison du manque de génération IV et du potentiel de fuite de données dans Mode BCE. Pour répondre à ces problèmes de sécurité, il est recommandé de définir explicitement le mode de cryptage et la stratégie de génération IV qui correspondent à vos besoins spécifiques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!