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

Entrée/Sortie Java Discussion :

Rendre inutilisable des fichiers de plusieurs Mo


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Par défaut Rendre inutilisable des fichiers de plusieurs Mo
    Bonjour,

    Je souhaiterai rendre inutilisable (hors appli) des fichiers d'une dizaine de Mo. Vu la taille de ceux-ci, le cryptage complet de ces fichiers ne me parait être la meilleure des solutions, je pensais donc à l'ajout d'un en-tête d'une centaine de bits au début (ou à la fin) du fichier. Le problème est qu'il me semble qu'il est impossible de modifier un fichier sans le ré-écrire totalement, ce qui engendrerait là encore des pertes de performances énorme.

    Auriez-vous une idée de comment protéger ces fichiers?

  2. #2
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Il n'existe aucun moyen fiable de protéger des fichiers pour les exploiter sur une machine cliente :
    1. Tôt ou tard il te faudra enlever la protection et le contenu sera accessible.
    2. Tu dois fournir l'algorithme de dé-protection dans ton application


    Un algo simple : l'application d'un masque ou l'inversion bit-à-bit.

    En ce qui concerne la gestion du fichier, tu peux très bien le protéger au moment de l'écriture.
    Autrement il est possible d'ajouter des données dans un fichier avec RandomAccessFile. J'ai déjà essayé de copier les données in-place en utilisant deux channel sur le même RandomAccessFile mais la copie n'était pas correcte, j'ai donc "déplacé" manuellement les octets par tranche. Ca ne prend pas plus d'une seconde pour un fichier de quelques méga.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Par défaut
    Je souhaite protéger ces fichier simplement car c'est une condition obligatoire pour pouvoir les exploiter (fichiers achetés à un organisme). Les utilisateurs du logiciel que je développe ne sont pas des utilisateurs avertis, je suis donc sûr qu'il ne chercheront pas à le décoder, d'ailleurs La simple modification de l'extension aurait largement suffit (non ce n'est pas une blague) . Ce n'est donc pas grave si la protection du fichier est faible.
    Par contre j'ai oubli de préciser, les fichiers étant encodés d'une certaine manière, il sont lu par une librairie externe dont je n'ai pas les sources. Le seul moyen que j'ai pour les protéger est donc de les recréer bit par bit. Tes solutions sont elles toujours valables?

  4. #4
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Tu fournies quoi à ton API pour lire les fichiers, un InputStream ou un File, une URI/URL ou un chemin ?
    Si tu peux utiliser un flux, alors codes toi une classe qui lit le fichier et le décode à la volée.

    Sinon la copie ne devrait pas être trop longue. Mais ça reste moins performant.
    Ca dépend grandement du besoin en réactivité, du nombre de fois où les fichiers sont exploités, de la taille minimale/moyenne/médiane/maximale de tes fichiers.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Par défaut
    A L'API je lui fournis le chemin du fichier, donc impossible de passer par un flux.

  6. #6
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    La copie du fichier reste donc la seule solution.
    Je créerais une sous-classe FilterInputStream pour gérer la transformation du fichier.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  7. #7
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Micke7 Voir le message
    A L'API je lui fournis le chemin du fichier, donc impossible de passer par un flux.
    Il n'y a vraiment aucun autre moyen ? Pas moyen d'utiliser un InputStream ou une URL ?


    Car sinon tu vas devoir réécrire les fichiers à chaque fois ce qui risque d'être très lourd !


    a++

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

Discussions similaires

  1. Accéder à des fichiers depuis plusieurs webapps
    Par julien20vt dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 11/10/2011, 17h12
  2. [Toutes versions] Listage des fichiers en plusieurs exemplaires
    Par YAKYETI dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/11/2010, 07h44
  3. [Multicast] Transferer des fichiers vers plusieurs postes
    Par johnson95 dans le forum Réseau
    Réponses: 1
    Dernier message: 17/06/2010, 22h04
  4. [MySQL] Rendre compatibles des enregistrements de plusieurs champs
    Par phoque.r dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 25/06/2007, 11h09

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