Comment savoir quel algorithme de [ cryptage ] sont pris en charge par mon JVM?
Je suis en utilisant Jasypt pour le chiffrement. C'est mon code:
public class Encryptor {
private final static StandardPBEStringEncryptor pbeEncryptor = new StandardPBEStringEncryptor();
private final static String PASSWORD = "FBL";
private final static String ALGORITHM = "PBEWithMD5AndTripleDES";
static{
pbeEncryptor.setPassword( PASSWORD );
//pbeEncryptor.setAlgorithm( ALGORITHM );
}
public static String getEncryptedValue( String text ){
return pbeEncryptor.encrypt( text );
}
public static String getDecryptedValue( String text ){
return pbeEncryptor.decrypt( text );
}
}
Décommentez la setAlgorithm
ligne et il lèvera une exception
org.jasypt.des exceptions.EncryptionOperationNotPossibleException:
Le chiffrement a soulevé une excep tion. Un
cause possible est que vous êtes en utilisant de forts
les algorithmes de chiffrement et vous n'avez pas
installé le Java Cryptography Ex
tension (JCE) Force Illimitée
La compétence Politique des Fichiers dans ce Java
La Machine Virtuelle
api dit:
Définit l'algorithme utilisé pour
cryptage Définit l'algorithme
utilisé pour le chiffrement, comme
PBEWithMD5AndDES.Cet algorithme doit être pris en charge par
votre JCE fournisseur (si vous spécifiez un,
ou la JVM par défaut du fournisseur si vous
ne le font pas) et, si elle est prise en charge,
pouvez également spécifier le mode et le rembourrage pour
c', ALGORITHME de type/MODE/REMBOURRAGE.
Maintenant, lorsque vous commentez 'setAlgorithm' il va utiliser l'Algorithme par défaut [ je suppose que c'est le md5 ], et il fonctionne parfaitement. Cela signifie que md5 est pris en charge par mon JVM. Maintenant, comment savoir ce que les autres algorithmes de chiffrement sont pris en charge par mon JVM.
Merci,
Vous devez vous connecter pour publier un commentaire.
La commande suivante liste de tous les fournisseurs, et les algorithmes partisan. Quelle est la version de Java que vous utilisez? Sauf si vous êtes sur une ancienne version de JCE doit être inclus en tant que norme.
Edit:
Aucune raison pourquoi vous n'utilisez pas la norme des choses de la javax.crypto paquet?
1) Générer un
Key
à l'aide de2) Créer un
Cipher
à l'aide de3) Init votre chiffrement avec la clé
4) Faire le chiffrement à l'aide de
La Jasypt outil de ligne de commande est désormais livré avec un script pour faire ce qu'on appelle
listAlgorithms.bat
pour windows etlistAlgorithms.sh
pour Linux.Vous pouvez trouver des instructions sur la façon de télécharger et de l'utiliser ici: http://www.jasypt.org/cli.html#Listing_algorithms
Si vous ne l'avez pas déjà installé, vous devez installer le JCE (Java Cryptography Extension) qui fournit un soutien pour les algorithmes.
Vous pouvez voir comment l'installer ici:
http://download.oracle.com/javase/1.4.2/docs/guide/security/CryptoSpec.html#ProviderInstalling
La bibliothèque peuvent être trouvés ici:
http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136007.html
J'ai essayé le code posté par @Qwerky, mais ce n'est pas très utile. J'avais ajouté les derniers BouncyCastle fournisseur, et les résultats que j'ai été très confus. Cette montre en mieux détail qui est le fournisseur, la version et le type d'algorithme et de nom.
Il est toujours "en attente" à la question posée par Qwerky: pourquoi Jasypt au lieu d'utiliser javax.crypto?
Bien, je vous conseille d'utiliser Jasypt que c'est un moyen simple de crypto pour les débutants et hautement configurable pour les utilisateurs expérimentés.
Avec Jasypt, vous pouvez commencer à prendre avantage de javax.crypto rapidement avec un peu de connaissance de l'entreprise criminelle commune, et la cryptographie. Si vous souhaitez gérer les mots de passe utilisateur ou de chiffrer/déchiffrer les données, le cadre fournit une simple abstraction de la question.
Dans le même temps, le cadre expose toutes les possibilités de l'entreprise criminelle commune spécification pour permettre à des utilisateurs expérimentés d'être en plein contrôle.
En plus de cela, Jasypt offre beaucoup plus de fonctionnalités out-of-the-box pour bien connue des questions (qui traite les données sensibles stockées dans la base de données, ...)