Comment puis-je vérifier, en code Java, si la JVM actuelle dispose d'une cryptographie à force illimitée ?
Réponses
Trop de publicités?Dans le même esprit que la réponse de Dan Cruz, mais avec une seule ligne de code et sans passer par les exceptions :
boolean limit = Cipher.getMaxAllowedKeyLength("RC5")<256;
Ainsi, un programme complet pourrait être :
import javax.crypto.Cipher;
public class TestUCE {
public static void main(String args[]) throws Exception {
boolean unlimited =
Cipher.getMaxAllowedKeyLength("RC5") >= 256;
System.out.println("Unlimited cryptography enabled: " + unlimited);
}
}
Si vous êtes sous Linux et que vous avez installé le JDK (mais que Beanshell n'est pas disponible), vous pouvez vérifier avec la commande runscript
fournie avec le JDK.
jrunscript -e 'exit (javax.crypto.Cipher.getMaxAllowedKeyLength("RC5") >= 256 ? 0 : 1);'; echo $?
Cela renvoie un 0
si la cryptographie illimitée est disponible, ou 1
si elle n'est pas disponible. Zéro est la valeur de retour de « succès » correcte pour les fonctions du shell, et une valeur différente de zéro indique un échec.
Ceci est une version complète de copier-coller pour permettre les tests
import javax.crypto.Cipher;
import java.security.NoSuchAlgorithmException;
class Test {
public static void main(String[] args) {
int allowedKeyLength = 0;
try {
allowedKeyLength = Cipher.getMaxAllowedKeyLength("AES");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
System.out.println("The allowed key length for AES is: " + allowedKeyLength);
}
}
Courir
javac Test.java
java Test
Si JCE ne fonctionne pas, sortie : 128
JCE fonctionne quelque chose comme : 2147483647