Fichier de stockage des clés de la clé sans mot de passe

J'ai besoin de savoir si c'est possible de récupérer une clé à partir d'un fichier de clés sans fournir de la "storepass'. La documentation ici dit que "Lors de la récupération d'informations à partir du fichier de stockage des clés, le mot de passe est facultatif; si aucun mot de passe n'est donnée, l'intégrité de l'information récupérée ne peut pas être vérifiée et un avertissement est affiché"

Cependant, lorsque j'essaie d'obtenir la Clé sans mot de passe, je reçois "de java.lang.IllegalArgumentException: mot de passe ne peut pas être null" exception.

Suivants est la façon dont j'ai créé le fichier de clés

keytool -genseckey -alias "maclé" -keystore de magasin de clés.jks -storepass "mot de passe" -storetype "JCEKS" -keyalg AES -keysize 128

Et j'ai essayé de le récupérer comme suit

final KeyStore keyStore = KeyStore.getInstance("JCEKS");
keyStore.load(new FileInputStream(new File("C:\\temp\\keytool\\KEYSTORE.jks")), 
  null);
final Key key = keyStore.getKey("myKey", null);

Qui lève l'exception suivante

java.lang.IllegalArgumentException: password can't be null
at com.sun.crypto.provider.SunJCE_z.<init>(DashoA13*..)
at com.sun.crypto.provider.JceKeyStore.engineGetKey(DashoA13*..)
at java.security.KeyStore.getKey(KeyStore.java:763)

Ai-je mal compris la documentation complètement? Est-il un autre moyen de contourner cela, car je ne vois pas l'intérêt dans la conservation de la "storepass" en clair dans mon code où tout le monde peut le voir, donc de rendre le mot de passe inutiles.

OriginalL'auteur Nishant | 2012-03-18