Comment crypter/décrypter un fichier en Java?
Je suis en train d'écrire une application Java qui peut "crypter" et donc à "déchiffrer" quel que soit le fichier binaire.
Je suis juste un débutant dans la "cryptographie" zone donc je voudrais écrire une application très simple pour le début.
Pour la lecture du fichier d'origine, je serais probablement utiliser le java.io.FileInputStream
classe pour obtenir le "tableau d'octets" byte originalBytes[]
du fichier.
Alors je serais probablement utiliser certains très simple chiffre, par exemple "de déplacer vers le haut de chaque octet par 1" et puis je voudrais obtenir le "crypté" octets byte encryptedBytes[]
et disons que je voudrais également mettre un "mot de passe" pour, par exemple, "123456789".
Ensuite, quand quelqu'un veut "déchiffrer" ce fichier, il doit entrer le mot de passe ("123456789") d'abord et après que le fichier a pu être décryptée (donc "décalage vers le bas de chaque octet par 1") et, par conséquent, enregistré dans le fichier de sortie via java.io.FileOutputStream
.
Je me demandais simplement comment faire pour "stocker" les informations de mot de passe pour le fichier crypté afin que le décryptage de l'application sait si le mot de passe saisi et le "vrai" mot de passe est égal à?
Probablement, il serait idiot d'ajouter le mot de passe (par exemple le code ASCII du caractère ordinal des nombres du mot de passe des lettres) au début du fichier (avant les données chiffrées).
Donc ma question principale est de comment stocker les informations de mot de passe pour le fichier crypté?
Vous devez vous connecter pour publier un commentaire.
Il serait probablement plus facile de ne pas vérifier le mot de passe par l'utilisateur à l'encontre d'un mot de passe global, plutôt de s'assurer que seul un mot de passe (connu par l'utilisateur) déchiffre le texte chiffré dans le bon en clair, tout autre mot de passe retour du charabia. C'est généralement de la façon dont la cryptographie œuvres et signifie que vous n'avez pas à stocker de manière centralisée mot de passe de n'importe où.
Peut-être que cette bibliothèque open source peut vous aider à:
http://www.jasypt.org/
Utiliser le mot de passe pour crypter vos données.
Par exemple, vous pouvez répéter le mot de passe de sorte qu'il correspond à l'octet longueur du tableau, puis faire quelque chose comme
Edit: si vous voulais stocker le mot de passe, vous auriez à le chiffrer. Qui - au moins lors de l'utilisation symétrique crypto-systèmes - sera par nature précaire.
Ne pas les stocker! Tout bon de chiffrement est basé sur des algorithmes mathématiques (comme AES). Vous voudrez peut-être avoir un coup d'oeil à BouncyCastle http://www.bouncycastle.org/ - mais le chiffrement n'est pas un simple sujet, vous devriez obtenir un bon livre pour apprendre au sujet de ses bases en premier!
essayer l'exemple donné ci-dessous. u peut convertir les octets de la chaîne et ensuite chiffrer et puis les écrire dans un fichier. inverser lors du déchiffrement.
http://www.exampledepot.com/egs/javax.crypto/desstring.html
ci-dessous u peut trouver un exemple DES enc&dec pour les fichiers..
http://www.exampledepot.com/egs/javax.crypto/DesFile.html
Un moyen vraiment simple à utiliser un mot de passe pour crypter est d'utiliser XOR, voici le pseudo-code
Ceci est basé sur l'identité (x XOR y) XOR y = x, tout ce que vous devez faire est de crypter/décrypter avec le même mot de passe.