La lecture et l'Écriture d'un SecretKey à un fichier
Je suis à la recherche pour être en mesure d'enregistrer un DES SecretKey à un fichier, de sorte que vous pouvez les importer et les utiliser plus tard.
J'ai regardé un peu les routes, mais ils semblent tous un peu longue haleine, n'est-il pas conscise façon simple de le faire?
Veuillez expliquer ce que vous avez essayé.
N'ai pas essayé, au lieu de lire, de Génération d'une clé et de le convertir ensuite en octets. Mais je ne trouve pas de directives claires sur la façon dont je voudrais faire de même ce, les exemples sont toujours en train de faire plus que j'en avais besoin.
Ne
Je ne comprends pas vraiment Comment je suis censé utiliser cette méthode, et je ne peux pas trouver un décent exemples.
N'ai pas essayé, au lieu de lire, de Génération d'une clé et de le convertir ensuite en octets. Mais je ne trouve pas de directives claires sur la façon dont je voudrais faire de même ce, les exemples sont toujours en train de faire plus que j'en avais besoin.
Ne
Key.getEncoded()
de ne pas faire ce que vous voulez?Je ne comprends pas vraiment Comment je suis censé utiliser cette méthode, et je ne peux pas trouver un décent exemples.
OriginalL'auteur RyanSoper | 2012-05-10
Vous devez vous connecter pour publier un commentaire.
Pas en clair sur certaines choses: ce que vous considérez comme "de longue haleine", comment vous êtes la génération de la clé, et le format que vous avez la clé. Si vous n'avez pas de clé, vous pouvez utiliser l'utilitaire keytool (un utilitaire qui est livré avec le jdk) pour générer et de le mettre dans un fichier appelé fichier de clés. Vous pouvez également utiliser le KeyGenerator classe et le fichier de clés de classe de programmation pour la même chose (les deux sont assez bien documenté et la Fichier de clés javadoc a un exemple qui fait exactement ce que vous semblez vouloir.)
Si c'est de longue haleine, vous pouvez générer la clé et la mettre dans un fichier texte en texte clair. Ensuite, vous pouvez accéder à l'aide d'un BufferedReader. C'est moins sûr, car toute personne ayant accès à ce fichier permettra de connaître votre clé, mais c'est un peu plus facile.
KeyGenerator.generateKey() retourne un objet de type SecretKey. SecretKey.getEncoded() retourne la clé comme un char[]. Vous pouvez convertir cette chaîne et d'enregistrer dans un fichier texte. Espérons que cette aide.
Merci pour le lien vers le fichier de clés java doc; j'ai eu des problèmes avec cette (ma première tentative à toute forme de cryptage) et cela me dans la bonne direction.
OriginalL'auteur Sanjeev
Le plus "naturel" pour économiser
SecretKey
dans un fichier en Java consiste à utiliser unKeyStore
: c'est exactement ce que c'est (bien que vous pouvez enregistrer les certificats de trop, bien sûr).La exemple dans la documentation montre comment enregistrer une clé privée et une clé secrète. Il permettra également de les chiffrer avec une protection paramètre (mot de passe).
OriginalL'auteur Bruno
javax.crypto.SecretKey extends java.security.Key
java.security.Key extends java.io.Serializable
Donc, si vous faites confiance au système de fichier pour lequel vous êtes le stockage des clés, vous pouvez écrire une clé à l'aide de
java.io.ObjectOutputStream
et de la lire à l'aide dejava.io.ObjectInputStream
.et l'entrée ressemble
Pour générer une clé, vous avez besoin d'un
KeyFactory
ouSecretKeyFactory
puis de générer un secret
donné une clé spec qui est approprié pour l'algorithme. Voir la
KeySpec
javadoc de pointeurs vers algorithme spécifiqueKeySpec
implémentations.Pour DES, voir
DESKeySpec
même si vous voulez quelque chose de plus moderne.vous devez faire confiance à quelque chose. Si vous allez avoir une tête de processus qui utilise des clés, alors vous avez à donner à ce que s'amorce l'accès à des touches, ou de lui donner accès à une clé d'un magasin de clés. Fichier de clés sont de grandes choses, mais pour headless processus qu'ils ne permettent pas de résoudre le problème, il suffit de le pousser à nouveau une couche.
Bien que vous avez raison, vous êtes "juste en le poussant en arrière d'une couche", je suis avec @Bruno sur ce point car, dans certains cas, cela est utile. Vous pouvez intégrer le mot de passe de votre fichier de clés dans
votre application. De cette façon, A) en cas de destruction, accès non autorisé ou la copie il est moins probable que les touches s'être compromis, car il y a deux éléments d'information nécessaires pour obtenir les clés. B) si le serveur est compromis, bien qu'il ne serait pas impossible d'obtenir à la clé, comme vous l'avez souligné, il n'est plus négligeable, surtout si le fichier est dans un autre système que celui de l'application.
Cependant, il est un point qui, à un carrefour, vous devez fournir le mot de passe pour obtenir les clés.
OriginalL'auteur Mike Samuel