IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Encodage de fichier en BASE64 avec grain de sel


Sujet :

avec Java

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 39
    Points : 50
    Points
    50
    Par défaut Encodage de fichier en BASE64 avec grain de sel
    Bonjour,
    J'ai pour but de créer une application qui permet de crypter les fichiers grâce aux BASE64.
    Cependant j'aimerai ajouté un grain de sel pour pouvoir personnalisé cette BASE64 avec qu'il soit plus difficile de le décoder.
    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
     
    public class FileCodecBase64 {
     
    	public static void main(String args[]) throws Exception {
     
    		/* Encode a file and write the encoded output to a text file. */
    		FileCodecBase64 fileCodecBase64 = new FileCodecBase64();
    		fileCodecBase64.encode("C:\\Users\\Kentin\\Desktop\\Cahier de charge projet SiiC.pdf",
    				"C:\\Users\\Kentin\\Desktop\\Cahier de charge projet SiiC_encoded.pdf");
     
    		/* Decode a file and write the decoded file to file system */
    		fileCodecBase64.decode("C:\\Users\\Kentin\\Desktop\\Cahier de charge projet SiiC_encoded.pdf",
    				"C:\\Users\\Kentin\\Desktop\\Cahier de charge projet SiiC__decoded.pdf");
    	}
     
    	/**
             * This method converts the content of a source file into Base64 encoded data
             * and saves that to a target file. If isChunked parameter is set to true, there
             * is a hard wrap of the output encoded text.
             */
    	public void encode(String sourceFile, String targetFile) throws Exception {
     
    		String saltStr = "123_$@lTàAdd$Up#&_123";
    		byte[] saltBytes = saltStr.getBytes();
     
    		byte[] base64EncodedData = java.util.Base64.getEncoder().encode(loadFileAsBytesArray(sourceFile));
    		writeByteArraysToFile(targetFile, base64EncodedData);
    	}
     
    	public void decode(String sourceFile, String targetFile) throws Exception {
    		byte[] decodedBytes = java.util.Base64.getDecoder().decode(loadFileAsBytesArray(sourceFile));
    		writeByteArraysToFile(targetFile, decodedBytes);
    	}
     
    	/**
             * This method loads a file from file system and returns the byte array of the
             * content.
             *
             * @param fileName
             * @return
             * @throws Exception
             */
    	public byte[] loadFileAsBytesArray(String fileName) throws Exception {
     
    		File file = new File(fileName);
    		int length = (int) file.length();
    		BufferedInputStream reader = new BufferedInputStream(new FileInputStream(file));
     
    		byte[] bytes = new byte[length];
    		reader.read(bytes, 0, length);
    		reader.close();
    		return bytes;
    	}
     
    	/**
             * This method writes byte array content into a file.
             *
             * @param fileName
             * @param content
             * @throws IOException
             */
    	public void writeByteArraysToFile(String fileName, byte[] content) throws IOException {
    		File file = new File(fileName);
    		BufferedOutputStream writer = new BufferedOutputStream(new FileOutputStream(file));
    		writer.write(content);
    		writer.flush();
    		writer.close();
    	}
    }
    J'aimerai ajouter un tableau de bytes supplémentaire lors de l'encodage et l'enlevé lors du décodage afin qu'il ne soit pas décodable par n'importe qui.
    Je sais pas trop où et comment ajouter mon propre tableau de bytes.

    Merci d'avance,

    Et bonne journée !

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Si tu veux faire du chiffrement, utilise les algorithmes faits pour ça: AES, RSA, Blowfish, etc...
    Base64 est utilisé pour transférer des données binaires, pas pour faire du chiffrement.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 39
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par fr1man Voir le message
    Si tu veux faire du chiffrement, utilise les algorithmes faits pour ça: AES, RSA, Blowfish, etc...
    Base64 est utilisé pour transférer des données binaires, pas pour faire du chiffrement.
    J'aurai bien voulut à la base je voulais faire en AES mais les conditions de mes profs sont soit en ASCII soit en BASE64 (ce que je trouve un peu stupide d'ailleurs mais bon).
    Merci pour ta réponse

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 621
    Points
    21 621
    Par défaut
    Bon mais dans ce cas n'importe qui pourra toujours le décoder. Ça ne sert à rien d'espérer l'empêcher.
    Ce n'est pas un système de chiffrage, c'est un encodage pour, ben, on sait pas la raison mais il peut y en avoir des tas parce que l'ASCII ça se conserve pas toujours bien.

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 39
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Bon mais dans ce cas n'importe qui pourra toujours le décoder. Ça ne sert à rien d'espérer l'empêcher.
    Ce n'est pas un système de chiffrage, c'est un encodage pour, ben, on sait pas la raison mais il peut y en avoir des tas parce que l'ASCII ça se conserve pas toujours bien.
    ça marche ! En tout cas merci pour t'es réponses !
    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Concaténer deux fichiers Ligne/Ligne avec SH
    Par guiltouf dans le forum Linux
    Réponses: 7
    Dernier message: 22/05/2007, 14h35
  2. Réponses: 12
    Dernier message: 14/06/2004, 13h06
  3. [VB.NET] Fichier Excel vérouillé avec mot de passe
    Par rafano dans le forum ASP.NET
    Réponses: 2
    Dernier message: 10/06/2004, 14h36
  4. Réponses: 3
    Dernier message: 19/05/2004, 08h58
  5. Réponses: 19
    Dernier message: 24/05/2002, 16h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo