Manuel d'utilisation de la File Encoder Application v1.5 Table des matières Introduction La File Encoder Application est une application qui permet de chiffrer des fichiers. Elle permet essentiellement: crypter un fichier. Décrypter le fichier (crypté avec cette même application). Ouvrir le fichier crypté (décrypté au préalable) L'application permet d'utiliser des fichiers cryptés (avec extension.jfe) et décryptés avec son interface graphique. De même, le moteur de l'application peut être invoqué à travers l'interface de commande en obtenant ainsi la même fonctionnalité de cryptage/décryptage que l'application graphique. L'application est écrite en Java, il est donc portable sur différentes plates-formes et devrait être compatible. En d'autres termes, il devrait être possible de chiffrer un fichier sur une plate-forme et de le décrypter sur une autre. Il a été testé uniquement avec les processeurs Intel, sous Windows 8, Linux et OS-X, mais il devrait également être compatible avec toute plate-forme qui a installé la machine virtuelle Java (JRE). Il existe plusieurs paramètres de configuration du cryptage qui peuvent être modifiés de manière appropriée: augmenter la rapidité des processus de cryptage/décryptage. augmenter la robustesse du cryptage. Il n'est malheureusement pas possible d'optimiser tous les points à la fois. Donc, si l'on veut augmenter la robustesse du cryptage à travers les valeurs des paramètres de cryptage, cela va à l'encontre de l'augmentation de la vitesse ou de la réduction de l'utilisation de la mémoire. Si vous n'avez pas envie d'apprendre les paramètres, vous pouvez laisser la configuration de base qui inclut les paramètres basés sur la taille du fichier, pour permettre aux fichiers plus grands d'être cryptés avec une configuration plus rapide que les petits. Indépendamment des paramètres utilisés pour crypter, un bon mot de passe permet d'augmenter la robustesse du cryptage. C'est pourquoi il est conseillé d'utiliser un mot de passe très long (peut-être une phrase), afin qu'une tentative de casser le cryptage par force brute devienne plus compliquée. Par exemple, un bon mot de passe devrait avoir des majuscules, des minuscules, des nombres et ne pas être composé uniquement de mots de dictionnaire. Si nous ajoutons à cela que le mot de passe peut avoir une longueur longue, par exemple entre 30 et 40 caractères, le système de cryptage devient plus fort. Nouveautés dans la version 1.2 Cette nouvelle version de l'application est apparue en raison d'une erreur trouvée dans le fichierEncoderType 2, qui est apparu lors des tests de cryptage avec de grands fichiers. Le fichierEncoderType 4 a été créé pour remplacer le fichierEncoderFile 2 qui corrige l'erreur trouvée et augmente la gamme des numéros jusqu'à 256. En outre, deux fileEncoderTypes adaptés aux grands fichiers ont été créés. Les fileEncoderType 5 et 6 sont beaucoup plus robustes que leurs prédécesseurs pour les grands fichiers. Le fileEncoderType 6 comprend une simplification qui le rend un peu moins robuste que le 5 pour les grands fichiers, mais en retour augmente la vitesse de cryptage d'un facteur de plusieurs lecteurs. Ce nouveau type (6) n'est pas conseillé pour crypter des fichiers petits ou moyens (moins de 10 Mo). Des tests de cryptage de fichiers de grande taille (plus de 50 Go) ont été réalisés avec succès. Nouveautés dans la version 1.3 Dans cette nouvelle version de l'application, deux nouveaux types de cryptage ont été créés qui permettent d'utiliser plusieurs fils d'exécution (parallélisme), idéal pour l'utiliser avec de grands fichiers. fileEncoderType 7. Ce type de cryptage a deux modes de fonctionnement: Fichier d'entrée et fichier de sortie sur le même disque: Un fil séparé est utilisé pour l'accès au disque (le même fil pour la lecture et l'écriture). Plusieurs fils sont utilisés pour le cryptage. Fichier d'entrée et fichier de sortie sur des disques séparés: Un fil séparé est utilisé pour la lecture du fichier d'entrée. Un autre fil séparé est utilisé pour l'écriture du fichier de sortie. Plusieurs fils sont utilisés pour le cryptage. En fonction de la capacité de traitement de la machine et de la rapidité des disques d'entrée et de sortie, l'amélioration de la vitesse de cryptage varie d'un équipement à l'autre. Dans les tests qui ont été effectués (en utilisant le nombre optimal de fils et en étant le seul utilisateur de toutes les ressources de ma machine), on a réussi à diviser le temps total de cryptage en un facteur 2 pour de très grands fichiers. Si en outre nous rendons le fichier d'entrée et le fichier de sortie sur des disques différents, l'amélioration de la vitesse devient plus tangible, atteignant des facteurs d'amélioration de temps légèrement supérieurs à 3. Pour plus de détails, vous pouvez aller aux paragraphes qui expliquent le nouveau type de cryptage. 6.7-FileEncoderType-7 Comparative des temps de cryptage/décryptage des fichiers grands avec le nouveau type de cryptage (peut varier sur différents systèmes): fileEncoderType 8. Ce type de cryptage est égal à 7, mais permet de diviser le fichier crypté en volumes d'une certaine taille. Pour plus d'informations consulter le point: 6.8-FileEncoderType-8 Nouveautés dans la version 1.4 Un effet négatif produit avec des machines à dpi élevée (haute densité de pixels par centimètre) à partir de Java-9 a été corrigé. À partir de Java-9, un traitement automatique est introduit en tenant compte de la densité de pixels par centimètre de l'écran de l'appareil. Ce traitement automatique interfère négativement avec la fonctionnalité d'agrandissement intégrée dans mes applications. Afin d'éviter cet effet indésirable, la nouvelle fonctionnalité Java-9 a été désactivée. Nouveautés dans la version 1.5 La version de plate-forme v1.4 est utilisée et ajoute la requête de nouvelle version lors du démarrage de l'application. Démarrer rapidement Exigences Pour exécuter l'application, vous devez avoir l'environnement de java installé (Java Runtime Environment), dans la version 8 ou plus. De cette façon, vous pouvez ouvrir le fichier.jar existant dans le dossier./binary/ Démarrer rapidement Avant de commencer, indiquer que l'application utilise le microphone pour collecter des octets aléatoires, il faudrait donc avoir un microphone connecté pour que l'application fonctionne de manière optimale.. Dans cette version de l'application, cette partie a été améliorée et maintenant si le microphone est déconnecté, des nombres aléatoires sont générés à l'aide des générateurs de semences fournis par Java lui-même. Pour commencer à utiliser l'application, suivez les étapes suivantes: Ouvre la File Encoder Application, en double-cliquant sur: le.jar de l'application: qui se trouve dans.../_binary/jfe.v1.3.jar Ouvre une nouvelle fenêtre de fichier (Menu: Fichier->Nouveau). Fichier. Saisissez le fichier que vous souhaitez crypter (n'importe quel nom) ou décrypter (fichier avec extension.jfe). Vous pouvez cliquer sur le bouton "..." pour ouvrir la boîte de dialogue de sélection de fichier. Notez que pour crypter ou décrypter un fichier, le fichier crypté ou décrypté ne doit pas exister. Si ce fichier existe, l'opération échouera, car l'application n'écrasera pas le fichier. Mot de passe. Entrez le mot de passe que vous allez avoir dans le fichier crypté, ou que vous avez le fichier à décrypter. Répéter le mot de passe. Retapez le mot de passe. Les deux mots de passe doivent correspondre pour pouvoir crypter/décrypter. Après ces étapes, vous pouvez utiliser les boutons crypter, décrypter ou ouvrir un fichier crypté. Interface utilisateur Dans ce chapitre, vous verrez comment crypter, décrypter, ouvrir des fichiers cryptés et supprimer des fichiers existants et vous verrez également les options les plus courantes lors de l'exécution de ces actions. Écran principal Lorsque vous démarrez l'application graphique, un écran apparaît comme suit: Il y a un menu principal et une grande zone principale où seront les fenêtres MDI de l'application. Une option (Nouveau) apparaît dans le menu Fichier. En sélectionnant cette option, une nouvelle fenêtre de fichier apparaîtra. Vous pouvez ouvrir autant de fenêtres de fichier que nécessaire. L'aspect de la fenêtre de fichier est celui-ci: Il y a plusieurs paramètres à remplir avant d'accéder à la fonctionnalité. "Fichier décrypté." Le nom du fichier décrypté doit apparaître dans cette zone de texte. "Fichier crypté." Le nom du fichier crypté (avec extension.jfe) doit apparaître dans cette zone de texte. Pour remplir les deux tableaux de texte ci-dessus, il y a deux options: Cliquer sur le bouton de votre droite "..." Lorsque vous cliquez sur ce bouton, une boîte de dialogue s'ouvrira pour naviguer sur les disques de l'ordinateur et sélectionner le fichier. En l'éditant avec le clavier (cela peut être utile lorsque vous avez déjà dans la zone de texte le nom du fichier et que vous voulez modifier le nom du fichier). "Mot de passe" et "Repetir Mot de passe." Dans ces deux zones de texte, vous devez saisir le mot de passe qui s'applique au cryptage ou au décryptage du fichier. Les deux tableaux de texte doivent contenir le même mot de passe. C'est ainsi que, si vous avez mal écrit le mot de passe (en particulier lors du cryptage), vous pouvez vous en rendre compte. Sinon, il serait crypté avec un mot de passe inconnu et le fichier ne pourrait pas être décrypté. De toute évidence, le mot de passe utilisé pour crypter et décrypter doit être le même pour que le processus de décryptage se déroule correctement. Le checkbox de & #160; Entrée & #160; / sortie se trouve sur des disques différents, indique si le paramètre de cryptage & #160; & #160; / & #160; DecOnDifferentDrives & #160; indique que le fichier crypté et le décrypté se trouvent sur des disques différents, ce qui permet d'utiliser des fils séparés pour la lecture et l'écriture du disque pour les fileEncoderType 7 et 8. Le checkbox < < Auto > > (checkbox) indique si la valeur du checkbox ci-dessus est calculée automatiquement (l ' application considère que les fichiers sont sur des disques différents si la partition est différente, critère qui n ' est pas toujours valable). Une fois les paramètres ci-dessus remplis, la fonctionnalité peut déjà être utilisée. Avec la nouvelle fenêtre de fichier, vous pouvez accéder aux fonctionnalités en appuyant sur les boutons suivants: "Encrypter." Décrypte le fichier "Décrypter." Décrypte le fichier "Ouvrir un fichier crypté." Décrypte et ouvre le fichier avec l'application prédéfinie dans le système pour ce type de fichiers. Modifier le "Paramètres de cryptage". Il sert à modifier les paramètres de cryptage. Voir point: 3.7-Paramètres de cryptage "Borrer le fichier." À côté des composants de texte contenant les noms de fichier cryptés et décryptés, il y a des boutons avec une croix, qui permettent d'effacer le fichier de la zone de texte de votre gauche. Afficher le point: 3.9-Fichier de fichiers "Effacer l'histoire". Supprimer l'histoire de la zone de texte Histoire. "Annuler". Annuler le cryptage, le décryptage ou la suppression de fichier. Il y a une zone de texte (Histoire), dans laquelle apparaît l'état et le résultat des actions que nous prenons sur les fichiers. Il existe également une barre qui indique l'état d'avancement de l'action en cours et, lorsque le cryptage/décryptage d'un fichier se termine, il y a une étiquette à droite de la barre de progression qui indique le temps écoulé en millisecondes depuis le début de l'action. Menu Fichier Le menu Fichier ressemble à ceci: Ce menu a deux options: Nouveau. Lorsque vous cliquez sur cet élément du menu, nous créons une nouvelle fenêtre de fichier, vue au point précédent. Quitter. Permet de quitter l'application. Menu Outils Le menu Outils ressemble à ceci: Ce menu a trois options: Langue. Lorsque vous ouvrez ce sous-menu, les langues disponibles apparaissent. Il sert à changer la langue de l'application. Par défaut, les langues suivantes sont disponibles: "EN". Anglais "FR". Castellano "CAT". Catalan Paramètres de cryptage. Lorsque vous cliquez sur cet élément de menu, un formulaire permet de modifier les paramètres de cryptage utilisés en fonction des tailles de fichier à crypter. Voir point: 3.6-Liste des paramètres de cryptage Configuration de l'application. Lorsque vous cliquez sur cet élément de menu, un formulaire vous permet de modifier les paramètres généraux de configuration de l'application. Voir point: 3.8-Paramètres de l'application Menu Vue Le menu Vue ressemble à ceci: Ce menu n'a qu'une seule option: Zoom. Il permet de choisir la taille de la partie visuelle de l'application, avec un pourcentage indiquant la taille des composants par rapport à l'affichage normal des fenêtres (100%). Menu d'aide Le menu d'aide a cet aspect: Ce menu n'a que deux options: Aide. Ouvre ce fichier d'aide. Trouver une nouvelle version. Cette option fait une requête au serveur pour voir si une nouvelle version de l'application est disponible. Ce qui est nouveau. Cette option affiche le document expliquant ce qui est nouveau dans cette version. Licence. Affiche la licence qui a été acceptée la première fois que l'application a été exécutée. Voir la rubrique: 3.11-Licence À propos de. Lorsque vous cliquez sur cet élément de menu, un formulaire apparaît avec les données de l'application, les remerciements et les coordonnées. Voir la rubrique: 3.10 à propos de la liste des paramètres de cryptage Ce formulaire vous permet de créer, modifier et supprimer les paramètres de cryptage ou de revenir à la liste des paramètres de cryptage par défaut. Concepts de base Comme indiqué dans l'introduction, il existe plusieurs paramètres de cryptage qui influent sur la rapidité, l'utilisation de la mémoire et la robustesse du cryptage. Voir point: 3.7.1-Paramètres de la configuration de cryptage Étant donné que les paramètres de cryptage influent principalement sur la rapidité du cryptage/description, il semble logique de penser qu'une configuration de cryptage ou une autre devrait être utilisée en fonction de la taille du fichier. Pour faciliter les choses à l'utilisateur final, la File Encoder Application permet d'avoir des configurations de cryptage prédéfinies pour les différentes plages de taille de fichier, en choisissant automatiquement une configuration de cryptage en fonction de la taille du fichier à crypter. Ce formulaire permet de conserver ces paramètres de cryptage définis pour chaque plage de taille de fichier. Le formulaire Le formulaire a l'aspect suivant: Il y a un tableau récapitulatif des configurations de cryptage ordonnées de moins à plus grande taille de fichier, dont une seule ligne peut être sélectionnée à la fois. Chaque ligne correspond à une configuration de cryptage associée à une plage de tailles de fichier. La configuration de cryptage s'appliquerait à la plage de tailles de fichier depuis le champ SIZE_FROM de la configuration de cryptage elle-même en octètes, jusqu'au champ SIZE_FROM de la configuration de cryptage suivante (la ligne suivante), ou illimité s'il n'y a pas de ligne ultérieure. Il existe également un certain nombre de boutons qui apportent la fonctionnalité du formulaire: Bouton inverser. Réinitialiser les paramètres de cryptage par défaut. Retourne toutes les modifications apportées aux configurations de cryptage par plage de taille de fichier, laissant la liste des configurations de cryptage d'origine (c'est-à-dire celle qui venait initialement dans l'application). Bouton accepter (appliquer). Sortir en sauvant les paramètres. Permet de quitter le formulaire en sauvant les modifications apportées aux paramètres de cryptage. Bouton annuler. Sortir sans sauver les paramètres. Il permet de quitter le formulaire sans sauver ni appliquer les modifications apportées aux configurations de cryptage par plage de taille de fichier. En outre, lorsque vous cliquez sur le bouton droit de la souris dans la table de configuration, ce menu contextuel s'affiche et permet d'effectuer des opérations sur les éléments de cette table: Modifier les paramètres sélectionnés. Ouvre le formulaire permettant de modifier les paramètres de cryptage de la configuration de cryptage sélectionnée dans la table. Voir point: 3.7-Configuration de cryptage Modifier la nouvelle configuration. Ouvre le formulaire qui permet de créer une configuration de cryptage à partir de zéro, en incluant le paramètre SIZE_FROM qui vous permettra de définir la plage de tailles de fichier pour lesquelles vous appliquez cette configuration. Supprimer les paramètres. Supprimer les paramètres de cryptage sélectionnés dans la table. Configuration de cryptage Ce formulaire permet de modifier les paramètres de cryptage pour une configuration de cryptage déterminée, soit pour l'appliquer directement sur un fichier à crypter (à partir d'un formulaire de fichier) soit pour modifier les paramètres de configuration de cryptage d'une plage de taille de fichier déterminée. Le formulaire a l'aspect suivant: Ce formulaire peut être obtenu soit à partir de la fenêtre de fichier, vue au point: 3.1-Pantaille principale, soit à partir du formulaire de liste des configurations de cryptage au point: 3.6.2-Le formulaire. Il y a un bouton pour charger les paramètres par défaut en fonction de la taille du fichier. Ce bouton n'est activé que si l'accès au formulaire est via la fenêtre de fichier. Si vous avez accédé à ce formulaire via le formulaire de liste de configuration de cryptage, ce bouton est désactivé. Ce bouton n'offre de fonctionnalité que si elle est activée et le fichier configuré dans la fenêtre de fichier doit également exister. Dans un autre cas, l'application ne fera rien. Paramètres de configuration du cryptage Les paramètres suivants peuvent être configurés: Taille du fichier (depuis). Cette valeur n'est pas un paramètre de configuration proprement dit et n'est activée que si l'accès au formulaire est assuré par le formulaire de liste de configuration de cryptage. C'est le cas, car dans ce cas, il s'agit de créer ou d'éditer une configuration de cryptage qui s'appliquera à une plage de tailles de fichier. La taille de fichier (à partir) indique le début de la plage de taille de fichier en octets. La fin de la plage à laquelle appliquera la configuration de ce formulaire dépendra du paramètre taille de fichier (à partir) de la configuration de cryptage suivante dans la liste des paramètres de cryptage. Si vous avez accédé à ce formulaire depuis la fenêtre de fichier, la configuration de cryptage qui est en cours d'édition, si elle est acceptée, peut être appliquée directement dans les paramètres de la prochaine cryptage, en fonction de la configuration des priorités de cryptage expliquée au point: 3.8-Configuration de l'application FileEncoderType. Ce paramètre indique quel type de FileEncoder sera utilisé pour crypter. C'est une valeur numérique qui, pour le v1.0, peut prendre les valeurs 1 ou 2. 1 (Non RECOMMANDÉ). Classe FileEncoder utilisant un générateur pseudo-aléatoire chaotique basé sur la case BigDecimal de Java pour faire les calculs. Comme les opérations de cryptage sont utilisées à bas niveau, il est possible qu'un changement d'implémentation dans cette classe dans une mise à jour de Java puisse briser la compatibilité vers l'arrière, de sorte qu'il a été décidé de créer une classe numérique longue moins dépendante de Java. 2 (OBSOLETO). Ce FileEncoderType contient un bug qui empêche son utilisation. Il indique que vous utilisez la classe FileEncoder qui utilise un générateur pseudo-aléatoire chaotique basé sur une classe numérique propre pour effectuer les calculs. Cette classe fonctionne avec des nombres de précision variables et n'est pas générique. Elle est très focalisée sur la plage numérique atteinte avec le générateur pseudo-aléatoire chaotique. Il contient les informations de nombre dans un tableau de long dont, pour des raisons d'optimisation, seuls les 31 bits inférieurs de chaque élément du tableau sont utilisés. Lorsque l'on parle de "blocs" dans les paramètres de cryptage suivants applicables à ce FileEncoderType, on se réfère à un élément du tableau de long, c'est-à-dire un long (31 bits). L'encrypteur de ce type utilise le cryptage XOR combiné avec la réordination pseudo-aléatoire d'octètes sur chacune des tranches dans lesquelles le fichier à crypter est divisé. 3 (OBSOLETO). FileEncoderType identique à l'ancien, mais avec la particularité que la taille des nombres augmente sa gamme. Avec ce FileEncoderType, vous pouvez travailler avec des tailles allant jusqu'à 256. Comme le FileEncoderType 2, vous avez un bug qui ne vous permet pas d'utiliser. 4. Ce fileEncoderType, est identique à celui ci-dessus, avec la différence que le bug a été corrigé. 5. Ce fileEncoderType est identique à l'ancien, mais, en plus du cryptage XOR combiné avec la réorganisation des octètes (comme tous les précédents), ajoute la particularité que les tranches dans lesquelles le fichier est divisé sont réorganisées. Cela le rend beaucoup plus fort face aux tentatives de casser le cryptage par force brute. Ce type de cryptage est particulièrement fort pour les fichiers moyennement grands. 6. (NE PAS RECOMMANDÉ) Ce fileEncoderType est identique à celui ci-dessus, mais pour accélérer la vitesse de cryptage/décryptage, la réordination des octets a été supprimée sur chaque tranche. Il est beaucoup plus rapide que le fileEncoderType 5, et pour les grands fichiers, il devrait être assez difficile à casser (beaucoup plus que le fileEncoderType 4). Il n'est pas conseillé d'utiliser dans les petits et moyens fichiers (moins de 10 Mo). Il est conseillé d'utiliser le fileEncoderType 7 à la place de celui-ci, car il peut être sensiblement plus rapide. 7. Ce fichierEncoderType est très similaire à celui ci-dessus, mais en ajoutant la possibilité d'utiliser plusieurs fils d'exécution. Spécialement conseillé pour les grands fichiers (plus de 100 MB), où on peut voir clairement que le temps d'exécution est faible lors de l'utilisation du traitement parallèle. 8. Ce fichierEncoderType est identique à celui ci-dessus, mais en ajoutant la possibilité d'écrire le fichier crypté en plusieurs volumes, la taille maximale de chaque volume étant configurable. NumBytesFileSlice. Ce paramètre de configuration de cryptage indique le nombre d'octets de roulement qui seront utilisés pour crypter. Pour les grands fichiers, il n'est pas possible de charger tout le fichier en mémoire et de faire les calculs pour le cryptage, car pour effectuer ces calculs, on utilise une mémoire entre 100 et 200 fois plus grande que celle de la taille en octets qui est cryptée, de sorte que pour, par exemple, un fichier de 50 MiB, on devrait avoir la cote supérieure de la mémoire utilisée serait 10 GiB, quantité de mémoire qui n'est pas disponible sur de nombreuses machines actuelles. Ce paramètre fait que le contenu du fichier est divisé en tranches, et pour chacune de ces tranches, le contenu de la tranche est d'abord lu dans un tableau d'octets, l'encryptage est appliqué, et le contenu de la tranche cryptée est inscrit dans le fichier crypté. Pour crypter la tranche suivante, il n'est plus nécessaire d'avoir en mémoire les tranches précédentes, de sorte qu'il n'est pas nécessaire d'utiliser autant de mémoire que si le fichier complet était crypté une fois pour toutes. Puis télécharger ce paramètre fait baisser la consommation de mémoire de l'application. Cependant, il ne serait pas bon de baisser beaucoup ce paramètre, car le cryptage complet du fichier peut être cassé par force brute si le cryptage de la première tranche est cassé, de sorte que pour mettre les choses les plus coûteuses à laquelle vous voulez casser ce cryptage, ce paramètre devrait être aussi élevé que possible en fonction de la mémoire dont nous disposons. Il faut garder à l'esprit que si nous mettons ce paramètre très haut, le fichier pourrait ne pas pouvoir être décrypté sur une machine avec moins de mémoire. Si vous donnez à ce paramètre la valeur 0, cela ne signifie pas que le cryptage du fichier est divisé en tranches (en utilisant une seule tranche comprenant tous les octets du fichier). SizeOfNumbersSimpleEncoder. Ce paramètre de configuration de cryptage s'applique à la taille numérique appliquée dans le générateur pseudo-aléatoire chaotique. Voir point: 5.2-Algorithme de cryptage Le paramètre SizeOfNumbersSimpleEncoder fait référence à la taille des nombres dans le générateur pseudo-aléatoire utilisé pour la première étape du cryptage (XOR). Les unités de ce paramètre sont légèrement différentes pour les FileEncoderType 1 et les autres. Pour le FileEncoderType 1, ce paramètre est exprimé en octets. Pour le FileEncoderType 2, 3, 4, 5, 6, 7 et 8, ce paramètre est exprimé en blocs de 31 bits. Dans ce cas, il serait égal au nombre d'éléments long dans le tableau qui a les données du nombre. (Dans chaque élément long du tableau sont stockés 31 bits). SizeOfNumbersReorderEncoder. Ce paramètre de configuration de cryptage s'applique à la taille numérique appliquée dans le générateur pseudo-aléatoire chaotique de la deuxième étape de cryptage (réorganisation). Les unités de ce paramètre sont légèrement différentes pour les FileEncoderType 1 et les autres. Pour le FileEncoderType 1, ce paramètre est exprimé en octets. Pour le FileEncoderType 2, 3, 4 et 5, ce paramètre est exprimé en blocs de 31 bits. Dans ce cas, il serait égal au nombre d'éléments long dans le tableau qui a les données du nombre. Les fileEncoderType 6, 7 et 8 n'utilisent pas ce paramètre. NumBitsPerIterationSimpleEncoder. Ce paramètre de configuration de cryptage s'applique au nombre de bits qui retourne le générateur pseudo-aléatoire sur chaque itération. Ce paramètre s'applique au générateur pseudo-aléatoire utilisé lors de la première étape (XOR). Ce paramètre influe considérablement sur le temps de calcul de l'encryptage. Pour les petits fichiers à crypter, il est conseillé d'utiliser une très faible valeur de ce paramètre, afin que la force de cryptage soit plus grande. Pour les fichiers grands ou très grands, il est préférable d'utiliser de grandes valeurs pour ce paramètre, car sinon le temps pour crypter/décrypter serait très long et il serait difficile d'attendre chaque fois que vous devez crypter/décrypter le fichier. Les valeurs acceptées par FileEncoderType 1 et les autres sont légèrement différentes: Pour FileEncoderType 1, ce paramètre peut accepter les valeurs 1, 2 ou 4. La valeur 4 est celle qui produit les cryptages les plus rapides, mais il n'est pas conseillé d'utiliser avec SizeOfNumbersSimpleEncoder moins de 16 octets, car dans ce cas, il y aurait des nombres entre 0 et 15 sur chaque itération qui ne seraient pas equiprobables. À partir de tailles de nombres de 16 octets, ils pourraient bien mieux être utilisés à partir de nombres de 32 octets. Pour le FileEncoderType 2, 3, 4, 5,6, 7 et 8 ce paramètre peut accepter les valeurs 1, 2, 4 ou multiple de 8 à 64 (64 est la valeur maximale). Toutes les valeurs ne sont pas autorisées. Pour la valeur de 4 il est conseillé de ne pas utiliser des tailles de nombres (configurées dans SizeOfNumbersSimpleEncoder) inférieures à 5 blocs. Mieux encore à partir de 8 blocs. Pour des valeurs supérieures à 4 (multiples de 8 à 64), la valeur configurée doit satisfaire à cette condition: NumBitsPerIterationSimpleEncoder Plumb 3 x SizeOfNumbersSimpleEncoder NumBitsPerIterationReorderEncoder. Ce paramètre de configuration de cryptage s'applique au nombre de bits qui retourne le générateur pseudo-aléatoire sur chaque itération. Ce paramètre s'applique au générateur pseudo-aléatoire utilisé lors de la deuxième étape (réorganisation). Ce paramètre influence considérablement le temps de calcul de l'encryptage. Pour les petits fichiers à crypter, il est conseillé d'utiliser une très faible valeur de ce paramètre, afin que la force de cryptage soit plus grande. Pour les fichiers grands ou très grands, il est préférable d'utiliser de grandes valeurs pour ce paramètre, car sinon le temps pour crypter/décrypter serait très long et il serait difficile d'attendre chaque fois que vous devez crypter/décrypter le fichier. Les valeurs acceptées par FileEncoderType 1 et les autres sont légèrement différentes: Pour FileEncoderType 1, ce paramètre peut accepter les valeurs 1, 2 ou 4. La valeur 4 est celle qui produit les cryptages les plus rapides, mais il n'est pas conseillé d'utiliser avec SizeOfNumbersReorderEncoder moins de 16 octets, car dans ce cas, on obtiendrait des nombres entre 0 et 15 sur chaque itération qui ne seraient pas équiprobables. À partir de tailles de nombres de 16 octets, ils pourraient bien mieux être utilisés à partir de nombres de 32 octets. Pour le FileEncoderType 2, 3, 4 et 5, ce paramètre peut accepter les valeurs 1, 2, 4 ou multiple de 8 à 64 (64 est la valeur maximale). Toutes les valeurs ne sont pas autorisées. Pour la valeur de 4 il est conseillé de ne pas utiliser des tailles de nombres (configurées dans SizeOfNumbersReorderEncoder) inférieures à 5 blocs. Mieux encore à partir de 8 blocs. Pour les valeurs supérieures à 4 (multiples de 8 à 64), la valeur configurée doit satisfaire à cette condition: NumBitsPerIterationReorderEncoder Plumb 3 x SizeOfNumbersReorderEncoder Les fileEncoderType 6, 7 et 8 n'utilisent pas ce paramètre. NumOfThreads. Indique le nombre de fils de cryptage à utiliser si le fichier crypté et le fichier décrypté sont sur le même disque (pour les fileEncoderType 7 et 8). Il peut être configuré avec la valeur < < optimum > >, qui indique qu ' avant le cryptage, la valeur optimale sera automatiquement estimée. Cette caractéristique est expérimentale, et il serait préférable d'indiquer directement le nombre optimal de fils avec une valeur numérique. Le nombre total de fils à utiliser dans ce cas, serait la valeur de ce paramètre plus un fil supplémentaire qui sera utilisé pour la lecture/écriture sur disque. NumOfThreadsForDifferentDrives. Indique le nombre de fils de cryptage à utiliser si le fichier crypté et le fichier décrypté sont sur des disques différents (pour les fileEncoderType 7 et 8). Il peut être configuré avec la valeur < < optimum > >, qui indique qu ' avant le cryptage, la valeur optimale sera automatiquement estimée. Cette caractéristique est expérimentale, et il serait préférable d'indiquer directement le nombre optimal de fils avec une valeur numérique. Le nombre total de fils à utiliser dans ce cas serait la valeur de ce paramètre plus deux (un fil supplémentaire à utiliser pour la lecture du fichier d'entrée et un autre fil supplémentaire à utiliser pour l'écriture du fichier de sortie). MaxTotalNumOfThreads. Indique la limite maximale de fils totaux à utiliser dans un cryptage (pour les fileEncoderTypes 7 et 8). Si le nombre total de fils est supérieur à la valeur de ce paramètre, le nombre de fils d'encryptage est alors limité à la valeur appropriée pour que cette valeur ne soit pas dépassée. Il est possible d'utiliser la valeur < < max > >, qui indiquera que le nombre maximal de fils de traitement est pris en charge par le processeur du PC sur lequel l'application est exécutée (lié au nombre de cors du processeur). SizeInBytesForVolumes. Indique le nombre maximal d'octets que vous pouvez avoir chaque volume du fichier crypté (pour le fichierEncoderType 8). Configuration de l'application Ce formulaire permet de modifier les paramètres généraux de configuration de l'application. Le formulaire comporte plusieurs onglets que nous détaillons ci-dessous Paramètres de cryptage de l'application L'onglet a l'aspect suivant: Les paramètres qui peuvent être configurés sont les suivants: Supprimer le fichier crypté après le cryptage. Ce check box permet de configurer précisément cela, si après le cryptage d'un fichier, vous souhaitez supprimer automatiquement le fichier non crypté. La suppression qui est effectuée n'est pas une suppression normale, mais elle est supprimée en plaçant des zéros dans chacun des octets du fichier, et après cela, elle devient une suppression normale. De cette façon, il est impossible de récupérer le fichier non crypté, à moins que vous ne décryptiez le fichier crypté de la manière habituelle, en utilisant le mot de passe. Renommer fichier crypté à.old après le décryptage. Ce check box permet de configurer si après une décryptation vous souhaitez enregistrer le fichier crypté qui vient d'être décrypté comme.old. De cette façon, vous vous assurez d'avoir une version cryptée du fichier, au cas où quelque chose d'inattendu se produirait. Demandez s'il faut écraser le fichier crypté.old. Si l'option ci-dessus est activée, cette option permet de configurer si vous souhaitez être interrogé pour confirmer l'écraser un fichier crypté.old avec le nouveau fichier crypté en attente d'être stocké sous.old. Priorité de configuration de cryptage. Dans ce tableau, vous pouvez configurer l'ordre de priorité de la configuration de cryptage. Par défaut, les options ont cette priorité: (1) - Manuel. Il se réfère à l'application manuelle d'une configuration de cryptage. Il est logique de la placer comme première option, car si vous ne la mettez pas comme première option, vous pouvez modifier la configuration de cryptage et l'accepter, mais cette configuration n'est pas appliquée lorsque vous effectuez le cryptage. (2) - Basé sur la taille du fichier. Cette option se réfère à ce que la configuration de cryptage est obtenue à partir de la liste des paramètres de cryptage qui sont configurés en fonction de la taille du fichier. Voir point: 3.6-Liste des paramètres de cryptage (3) - Basé sur les paramètres du fichier crypté après le décryptage. Il s'agit de collecter la configuration de cryptage basée sur la configuration de cryptage existante dans le fichier crypté qui vient d'être décrypté. La façon de configurer cet ordre de priorité, c'est de sélectionner dans la table la ligne où se trouve l'option à laquelle vous souhaitez changer la priorité, et d'appuyer sur les boutons Haut et Bas pour grimper ou baisser la priorité. Toujours demander avant de changer fileEncoderTypes obsolètes. Dans cette version de l'application, vous avez trouvé des fileEncoderTypes qui sont obsolètes, en raison d'un bug trouvé sur eux. Ce checkbox permet de configurer si, lorsque vous rencontrez un de ces fileEncoderTypes lors du cryptage d'un fichier, vous vous demandez à l'utilisateur ce qu'il faut faire. Si ce checkbox est démarqué, le checkbox suivant sera activé. Changer toujours fileEncoderTypes obsolètes. Si le checkbox ci-dessus est coché, ce checkbox ne peut pas être configuré, car il sera toujours demandé à l'utilisateur ce qu'il faut faire à l'aide d'une fenêtre. Si le checkbox ci-dessus est démarqué, ce checkbox vous permettra de configurer le comportement automatique lorsque vous trouverez fileEncoderTypes obsolètes. Si cette checkbox est cochée (changer toujours fileEncoderTypes obsolètes), soit le fichierEncoderType 2 soit le fichier 3, sera changé par fileEncoderType 4. Si ce checkbox est démarqué, le fichier EncoderType configuré sera laissé, en ignorant qu'il est obsolète (cela peut être utile si vous souhaitez décrypter avec une version précédente de l'application, qui n'avait que les fileEncoderTypes 1 et 2). Paramètres linguistiques de l'application L'onglet a l'aspect suivant: Les paramètres qui peuvent être configurés sont les suivants: Langue. C'est la langue des textes qui écrivent l'application. Les langues que vous pouvez choisir sont: EN. Anglais ES. Espagnol CAT. Catalan Locale de langue. C'est le local Java qui va utiliser l'application pour cette langue. L'application l'utilise pour convertir des nombres en chaînes numériques formatées. Langue Web. Indique la langue à utiliser dans les requêtes de nouvelle version du serveur. Langue supplémentaire. C'est une nouvelle langue supplémentaire qui apparaît au moment de changer de langue. Pour la nouvelle langue, vous devrez sélectionner le local Java à utiliser. Si vous voulez mettre une langue dont il n'y a pas de texte dans l'application, vous pouvez ajouter votre langue en traduisant les fichiers dans le répertoire créé lorsque vous appuyez sur le bouton OK. Les fichiers à traduire sont copiés dans le répertoire indiqué dans: "Directoire de langue supplémentaire" Le format de ces fichiers de texte est celui de properties de java. Pour ceux qui ne connaissent pas ce format, je vais vous dire qu'un fichier properties a un titre, et après celui-ci, un nombre variable d'étiquettes avec sa valeur, similaire à ce qui suit: # TITULO # xxxxxxxEVIS1=texte 1.1.2=texte 2... Les étiquettes doivent rester inchangées, et les textes doivent être modifiés en fonction de la traduction dans la langue choisie. En outre, il y a aussi quelques fichiers au format RTF, que vous devrez traduire avec un éditeur RTF (un éditeur typique pour ce format est le Word Office). Si vous créez la traduction pour une autre langue que celle disponible dans l'application, vous pouvez m'envoyer (frojasg1@hotmail.com) et je l'inclureai dans les versions suivantes de l'application. Paramètres d'affichage de l'application L'onglet a l'aspect suivant: Taille des fenêtres de l'application. Ce paramètre permet de contrôler l'aspect des fenêtres qui apparaissent dans l'application, avec la possibilité de choisir la petite taille, la normale, ou la grande taille. Suppression de fichiers L'application ne permet pas de crypter/décrypter si le fichier de sortie existe déjà, c'est-à-dire qu'il ne permet pas d'écraser un fichier. C'est pourquoi des options pour la suppression de fichiers ont été activées de manière confortable et flexible. Pour ouvrir la boîte de dialogue de suppression de fichier, il suffit de cliquer sur le bouton avec une aspa associée au fichier que vous souhaitez supprimer: Si le fichier que vous avez choisi pour être supprimé n'existe pas, alors une indication apparaîtra dans le composant texte (Histoire) de la partie inférieure. Si le fichier existait, la boîte de dialogue permettant de choisir la méthode de suppression que vous souhaitez utiliser apparaîtra: À ce stade, trois options sont autorisées: Suppression sécurisée: C'est une suppression qui ne permet pas que le fichier supprimé puisse être récupéré avec aucun outil de récupération de fichiers. La méthode d'écriture avec zéro est utilisée pour tous les octets du fichier, puis, enfin, pour effectuer une suppression normale. Ce type de suppression, étant plus coûteux, permet d'afficher les progrès dans la barre de progression et peut même être annulé par l'utilisateur, en utilisant le bouton d'annulation qui est à côté de la barre de progression. Supprimé normal: Une suppression normale du fichier Annuler est effectuée: Permet d'annuler l'opération, si vous vous êtes trompé de bouton. Une fois que le type de suppression a été sélectionné, l'application vérifie s'il existe un fichier paire (c'est-à-dire s'il s'agit de supprimer le fichier crypté, le fichier décrypté est vérifié, et avec le fichier décrypté, exactement le même). C'est ainsi, pour éviter une suppression accidentelle d'un fichier, au cas où votre partenaire n'existerait pas, car en théorie le fichier que nous voulons supprimer ne pourrait pas être recréé à partir d'elle. Dans ce cas, une notification comme celle-ci est affichée: Vous demandez essentiellement la confirmation que vous souhaitez effacer le fichier. Une fois que l'application s'est assurée que vous voulez supprimer le fichier, alors les actions sont exécutées sur tous les fichiers associés (c'est-à-dire s'il s'agit d'un fichier crypté du fichierEncoderType-8, qui permet plusieurs volumes, alors tous les volumes seront supprimés une fois). À propos de L'option À propos de..., affiche une fenêtre avec un résumé des nouveautés dans cette version. Les remerciements sont également inclus. Il a un aspect comme celui-ci: Licence L'option Licence, dans le menu À propos, permet d'afficher la licence qui a été acceptée la première fois que l'application a été exécutée. Il a un aspect comme celui-ci: cryptage par ligne de commande En plus de pouvoir crypter et décrypter à partir de l'interface graphique de l'application, il est également possible d'invoquer les fonctions de cryptage et de décryptage à l'aide de la ligne de commande. Vous pouvez passer le password de cryptage à l'aide d'un paramètre des scripts. Ce n'est pas très recommandé, car pour crypter/décrypter, il faut mettre le password en clair, et il est possible que quelqu'un puisse la voir en regardant l'histoire des commandes, ou même en regardant les processus qui sont exécutés sur le système. Il est également possible que vous deviez taper le mot de passe et que celui-ci soit affiché sur votre écran, de sorte que ce n'est pas un moyen très sûr d'utiliser les scripts. Il est préférable de ne pas passer le paramètre password (qui est facultatif) aux scripts. Ainsi, l'application demandera par clavier la valeur du password et sa confirmation. Il existe un répertoire (_scripts) dans lequel des scripts ont été créés pour faciliter la tâche. Il y a deux versions des scripts une pour Windows (scripts *.bat) et une pour Linux et Mac (scripts *.sh) Scripts pour Windows La version pour Windows des scripts se trouve dans le répertoire:...\_scripts\windows Les scripts disponibles sont les suivants: command.interface.FileEncoder.bat decodeFile.bat encodeFile.bat example.decodeFile.bat example.encode.file.bat Pour invoquer ces scripts, il faut le faire à partir du même répertoire dans lequel ils sont situés. Le premier script contient l'appel à l'application de Java, en recueillant les arguments qui lui sont passés et en les ajoutant aux arguments pour l'application de Java. Le deuxième script contient les commandes pour décrypter un fichier crypté. Prenez comme paramètres le nom du fichier crypté et le mot de passe. Le troisième script contient les commandes pour crypter un fichier. Il prend comme paramètres le nom du fichier et le mot de passe. Le quatrième script est un exemple de la façon d'invoquer le script qui crypte. Le cinquième script est un exemple de la façon d'invoquer le script qui décrypte. Dans tous les scripts, le paramètre password est devenu facultatif, de sorte que si le password n'est pas inclus dans l'invocation à l'application, cette question demandera le password par clavier. Scripts pour Linux et Mac La version pour Linux et Mac des scripts se trouve dans le répertoire:.../_scripts/Mac.or.Linux Au début, les scripts sont compressés dans le fichier: scripts.tar.gz Il faut décompresser ce fichier pour pouvoir travailler avec les scripts. Pour cela, à partir du répertoire où se trouve le fichier scripts.tar.gz, tapez la commande suivante: tar -xvzf scripts.tar.gz Une fois décompressés dans le répertoire, nous aurons les scripts suivants: command.interface.FileEncoder.sh decodeFile.sh encodeFile.sh example.decodeFile.sh example.encodeFile.sh Pour invoquer ces scripts, il faut le faire à partir du même répertoire dans lequel ils sont situés. Le premier script contient l'appel à l'application de Java, en recueillant les arguments qui lui sont passés et en les ajoutant aux arguments pour l'application de Java. Le deuxième script contient les commandes pour décrypter un fichier crypté. Prenez comme paramètres le nom du fichier crypté et le mot de passe. Le troisième script contient les commandes pour crypter un fichier. Il prend comme paramètres le nom du fichier et le mot de passe. Le quatrième script est un exemple de la façon d'invoquer le script qui crypte. Le cinquième script est un exemple de la façon d'invoquer le script qui décrypte. Dans tous les scripts, le paramètre password est devenu facultatif, de sorte que si le password n'est pas inclus dans l'invocation à l'application, cette question demandera le password par clavier. Paramètres de cryptage en tant qu'arguments Des scripts ci-dessus, le principal est celui-ci: command.interface.FileEncoder De lui est invoqué à l'application Java et comme paramètres prend principalement ceux qui ont déjà été décrits au point: 3.7.1-Paramètres de la configuration de cryptage Les paramètres disponibles pour crypter/décrypter sont les suivants: -password Suivre par un argument avec le password. C'est facultatif. Si le password n'est pas fourni, l'application le demandera par clavier à l'utilisateur (password et confirmation). -encodedFileName Suivre un argument avec le nom de fichier crypté. -decodedFileName Suivre un argument avec le nom de fichier décrypté. -encode ou -decode Pour sélectionner entre cryptage et décryptage. -fileEncoderType Suivre par un argument avec l'identificateur de fileEncoderType (1 obsolète ou 2) à utiliser dans le cryptage (seulement pour le cryptage) -sizeOfNumbersSimpleEncoder Suivre par la taille des nombres pour le passage de cryptage 1 (XOR) (seulement pour le cryptage). -sizeOfNumbersReorderEncoder Suivre la taille des nombres pour l'étape 2 (réorganisation) (seulement pour le cryptage). -numberOfBitsPerIterationSimpleEncoder Suivre le nombre de bits retournés par le générateur pseudo-aléatoire sur chaque itération pour l'étape 1 (XOR) (seulement pour le cryptage). -numberOfBitsPerIterationReorderEncoder Suivre le nombre de bits retournés par le générateur pseudo-aléatoire sur chaque itération pour l'étape 2 (réorganisation). (seulement pour le cryptage). -numBytesFileSlice Suivre le nombre d'octets de la tranche. Il est recommandé d'utiliser une valeur élevée pour ce paramétre. La mémoire utilisée par l'application est limitée d'environ 100 fois la taille du rouleau. (seulement pour le cryptage). -useFileSizeForEncryptingParams Si ce paramètre est présent, les paramètres de cryptage (définis par les 5 paramètres ci-dessus) seront calculés en fonction de la taille du fichier à crypter et les 5 paramètres ci-dessus seront écrasés. -encDecOnDifferentDrives S'applique uniquement aux nouveaux types de cryptage (FileEncoder-7 et 8). Si ce paramètre est présent (il n'a pas de valeur associée), je voudrais dire que les fichiers d'entrée et de sortie se trouvent sur des disques différents et que l'application va utiliser des fils séparés pour la lecture du fichier d'entrée et pour l'écriture du fichier de sortie (un pour chacun). Si ce paramètre n'est pas présent, un seul fil séparé sera utilisé ensemble pour la lecture du fichier d'entrée et pour l'écriture du fichier de sortie. -numOfThreads Ce paramètre n'est valable que pour les nouveaux types de cryptage (fileEncoderType-7 et 8), et indique le nombre de fils d'exécution de cryptage/décryptage à utiliser (si le paramètre: -encDecOnDifferentDrives n'apparaît pas). (voir paragraphe: 5.4-Utilisation des fils d'exécution (parallélisme) sur l'utilisation des fils). Valeur optimum: Ce paramètre peut être configuré avec une valeur non spécifique < < Optimum > > (en phase expérimentale) qui indiquera à l ' application que ce paramètre sera estimé juste avant l ' encryptage à l ' aide de la formule indiquée au paragraphe 5.4 < < Utilisation des fils d ' exécution > >. -numOfThreadsForDifferentDrives. Ce paramètre de configuration permet de configurer le nombre de fils de cryptage à utiliser dans le cas où les fichiers d'entrée et de sortie se trouvent sur des disques différents (ce paramètre serait celui que j'appliquerais pour configurer le nombre de fils dans le cas où le paramètre est également présent: -encDecOnDifferentDrives Ce paramètre prend des valeurs plus élevées que le paramètre homologue (le précédent), lorsque les fichiers d'entrée et de sortie se trouvent sur le même disque. (Voir paragraphe 5.4 - Utilisation des fils d'exécution (parallélisme) pour plus de détails). Valeur optimum: Ce paramètre peut être configuré avec une valeur non spécifique < < Optimum > > (en phase expérimentale) qui indiquera à l ' application que ce paramètre sera estimé juste avant l ' encryptage à l ' aide de la formule indiquée au paragraphe 5.4 < < Utilisation des fils d ' exécution > >. -maxTotalNumOfThreads. Ce paramètre permet de limiter le nombre maximal de fils à utiliser. Le nombre total de fils à utiliser est le nombre de fils de cryptage (qui, en cas de limitation, serait la valeur à modifier pour répondre à la limite de ce paramètre), plus le nombre de fils fixes d'entrée/de sortie (1 ou 2). (Voir paragraphe 5.4 - Utilisation des fils d'exécution (parallélisme) pour plus de détails). Ce paramètre peut être configuré avec la valeur < < max > >, qui indique le nombre maximal de fils permettant d ' utiliser le processeur où l ' application est exécutée. -sizeInBytesForVolumes. Ce paramètre est utilisé pour configurer la taille maximale des volumes dans lesquels le fichier crypté sera divisé dans le type de cryptage 8. Méthode de cryptage Les algorithmes de cryptage et de décryptage sont très similaires et identiques en temps informatique (cryptage symétrique). On trouvera ci-dessous un résumé de la méthode de cryptage utilisée pour l'application. En-tête du fichier crypté Un hash du mot de passe de cryptage (SHA-256) qui retourne une clé 256 bits que nous appelons clé-1 est calculé. La taille de clé-1 est toujours la même. Si nous utilisons le générateur pseudo-aléatoire avec différents paramètres de configuration, une clé 256 bits peut ne pas être optimale. La taille optimale de la clé à utiliser pour initialiser les générateurs pseudo-aléatoires pour le cryptage est calculée et nous l'appelons taille-2 Le microphone est utilisé comme source d'octets aléatoires, et ils sont pris de lui taille-2 octets qui seront utilisés pour former la clé-2 qui sera utilisée pour crypter. Si le microphone n'est pas disponible, des octets aléatoires seront obtenus avec la fonction generateSeed de la classe SecureRandom. Cette méthode d'obtention d'octètes aléatoires peut être plus lente que l'obtention d'octètes aléatoires à travers le microphone, il est donc conseillé d'avoir le microphone connecté. La clé 2 est utilisée pour crypter le fichier. La clé 1 est utilisée pour crypter la clé 2 La clé 2 cryptée, les paramètres de configuration du cryptage (non cryptée) et un hash (MD5) (cryptée) du fichier d'origine seront écrits dans l'en-tête du fichier crypté. (Ceci signifie qu'en plus du cryptage/description, il faut lire le fichier décrypté pour calculer le hash MD5). Ces informations seront utilisées pour décrypter le fichier. Le hash MD5 sera utilisé pour vérifier que le processus de décryptage s'est bien déroulé. Dans le cas des fileEncoderType 5, 6, 7 et 8, il sera également nécessaire d'enregistrer la longueur du fichier décrypté, afin de pouvoir le récupérer correctement avec le décryptage. Dans le cas des fileEncoderType 7 et 8, le nombre de fils d'exécution de cryptage à utiliser est également stocké dans l'en-tête. Dans le cas du fichierEncoderType 8, la taille maximale des volumes dans lesquels le fichier crypté est divisé est également stockée. En raison de la particularité des fileEncoderType 5, 6, 7 et 8, avant l'action de décryptage, vous devez créer le fichier complet rempli de zéros. C'est pourquoi, pour ces types de cryptage, le décryptage est légèrement plus lent que le cryptage. Algorithme de cryptage Cette application effectue le cryptage de fichiers en tranches, c'est-à-dire diviser le fichier en parties plus petites. Pour chaque cryptage de chaque tranche, deux étapes sont suivies: cryptage de la tranche de style XOR. Dans cette partie de l'encryptage, en générant des bits pseudo-aléatoires et en faisant un XOR avec les données originales, vous obtenez une tranche cryptée dont les octets sont assez aléatoires. Si nous laissons le cryptage ici, il serait relativement rapide d'essayer de casser ce cryptage si certains octets sont connus du début du fichier non crypté, comme ils peuvent être connus dans le cas de fichiers qui peuvent être ouverts avec une application quelconque (par exemple Word ou Excel), car généralement ces fichiers auront une sorte d'en-tête qui rend l'encryptage de ce type plus vulnérable. C'est pourquoi l'application génère une seconde étape dans le cryptage: Réorganisation pseudo-aleatoire des octets de la tranche. Dans cette partie de l'encryptage, on génère des positions pseudo-alléatoires, où l'on va déplacer un à un les octets de la tranche, réarrangeant l'ensemble des octets de la tranche. Pour obtenir les octets initiaux du fichier décrypté, il est nécessaire de décrypter un rouleau complet, ce qui rend plus difficile de casser le cryptage, car il est beaucoup plus coûteux dans les tempéraments de temps d'ordinateur de décrypter un rouleau complet (dont la taille est configurable, et par défaut est à 256.000 octets), que de décrypter les 100 ou 1000 premiers octets et de les comparer à un en-tête valide de word ou excel, par exemple. Les fileEncoderType 6, 7 et 8 suppriment cette étape, de sorte qu'ils sont beaucoup plus rapides que les autres fileEncoderTypes. Réorganisation pseudo-aléatoire des tranches. Cette partie du cryptage n'est présente que dans les fileEncoderTypes 5, 6, 7 et 8. Cette étape permet à l'encryptage de fichiers très grands d'être très difficile à casser, car l'ordre des tranches étant aléatoire, pour décrypter la première tranche (qui contient l'en-tête du fichier décrypté qui peut avoir un format connu, et permettre de déterminer si un password généré par force brute est bon ou non), il faudra décrypter en milieu, la moitié des tranches du fichier. Si le fichier est très grand, une attaque par force brute devient impossible, en raison du coût de calcul (il faudrait beaucoup de temps pour trouver le bon password, même avec des superélectroniques). Cette fonctionnalité rend les fileEncoderTypes 5, 6, 7 et 8 les plus difficiles à casser pour les grands fichiers. Dans les étapes ci-dessus, pour réaliser votre partie de cryptage, vous utilisez un générateur pseudo-aléatoire chaotique, qui dans l'implémentation actuelle sont caractérisés essentiellement par une taille de nombres à utiliser dans le générateur et le nombre de bits pseudo-aléators à retourner sur chaque itération. Selon ces deux paramètres, le générateur pseudo-aléatoire calcule le nombre d'octets optimal que le mot de passe doit avoir. Plus la taille des nombres est grande, plus la taille optimale du mot de passe doit être initialisée par le générateur pseudo-aléatoire, et plus le temps de calcul de chaque itération sera long. Ainsi, une plus grande taille de nombres rend le temps de cryptage/décryptage plus long. L'effet sur le temps de calcul de ce paramètre est plus faible que le nombre de bits par itération du générateur pseudo-aléatoire. La configuration idéale serait celle qui produirait un cryptage robuste et rapide. Pour atteindre cet objectif, nous pourrions utiliser de grandes tailles de nombre (plus robuste) avec un nombre élevé de bits retournés par itération (plus rapide) et combiné avec des tailles de roulement aussi grandes que possible (beaucoup plus robuste, mais plus ce nombre est élevé, plus la mémoire est utilisée). Un très petit nombre de bits retournés par itération (par exemple: 1) et une grande taille de nombres devraient être utilisés pour les petits fichiers. La taille de la tranche devrait être au moins égale à la taille du fichier à crypter. Exemples de configurations optimales de cryptage: Pour de très petits fichiers: fileEncoderType 4 Taille des nombres: 256 Bits par itération: 1 Taille du rouleau: 0 Pour les grands fichiers (plus de 100 Mo): fileEncoderType: 7 Taille des nombres: 10 Bits par itération: 64 Taille du rouleau: (au mieux la taille du fichier / 10, avec un maximum de 16 Mo). Nombre de fils: 3 (pour les fichiers d'entrée et de sortie sur le même disque) Nombre de fils: 5 (pour les fichiers d'entrée et de sortie sur les disques différents) Générateur pseudo-aléatoire utilisé Le générateur pseudo-aléatoire utilisé dans cette application, est un générateur pseudo-aléatoire basé sur des séquences chaotiques. Il s'agit d'un générateur pseudo-aléatoire très simple et très facile à déployer. La description de ce générateur pseudo-aléatoire a été tirée du livre: "Séquences pseudo-alléatoires pour les télécommunications" Éditions UPC (1996) Ernesto J. Forner Cruselles et José L. Melus Moreno Un merci pour eux d'avoir écrit un livre si intéressant. Citant le livre lui - même: " Ce générateur, proposé par M. Romera, I. Jiménez et J. Negrillo [ROM90], est également basé sur la génération de séquences pseudo - alléatoires par l'utilisation de fonctions chaotiques. [ROM90] ROMERA, M.; JIMENEZ, I. NEGRILLO, J. Generación de Secuencias Cifranes Par Funciones Chaóticas. I Reunión Española de Cryptólogía. Mallorca, 1990. ... La séquence chaotique de ce générateur (à nombres réels) est définie par: Xo = 0 Xi+1 = Xi2 + K Si -2 Plumb KBX 0,25, alors les numéros de cette séquence sont réduits: -2 Plumb XiBX2 Quelques séquences sont cycliquement convergentes (jours 1, 2, 3...) et d'autres sont chaotiques. Lorsque K est très proche de -2, par exemple K = -1,99999XXXXXXXXXXX, les séries obtenues à partir de l'itération réelle de Mandelbrot sont presque toujours chaotiques. ... La séquence réelle obtenue peut facilement devenir une séquence pseudo-aléatoire binaire, en prenant le signe de chaque numéro de série (la distribution est symétrique par rapport à zéro), ou en appliquant un critère de parité aux chiffres de chaque numéro de série." Sur la base de ce générateur de séquences chaotiques, nous avons créé notre générateur très similaire à celui-ci, qui répond aux grandes conditions suivantes: -1 Faible Xo FLAVIS 1 K = -1,99999999xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Pour initialiser le générateur pseudo-aléatoire, nous aurons besoin d'une graine (un nombre d'octets), que nous utiliserons pour initialiser Xo et la partie variable de K Les deux X et K doivent être des nombres de précision configurables permettant une très grande précision, car si nous utilisons les types de base de nombres de plus grande précision qui existent dans Java (double), la plage de la graine serait très limitée et par force brute, le système pseudo-aléatoire pourrait être brisé. Les options que nous avons sont: Utiliser la classe BigDecimal de Java (Utilisé dans le FileEncoderType=1, non recommandé) Programmer une nouvelle classe qui gère des nombres de précision variable (Utilisé dans le FileEncoderType=2 et 3 (OBSOLETOS) et FileEncoderType=4 (recommandé pour les petits fichiers), 5 (recommandé pour les fichiers moyens) 6 (non recommandé) et 7 et 8 (recommandés pour les grands fichiers ). Les bits pseudo-aléatoires qui découlent de la séquence chaotique sont obtenus de ces manières: Lorsque le nombre de bits produits par itération est 1, 2 ou 4 (pour tous les fileEncoderTypes): Les bits "1" du Xi sont comptés et le module est fait (2 si le nombre de bits par itération était 1, 4 s'il était 2 ou 16 s'il était 4). C'est la version la plus robuste du générateur pseudo-aléatoire (le plus cher en temps de calcul, et le moins dépendant de la valeur spécifique de Xi) De cette façon, vous obtenez les bits pseudo-aléatoire de chaque itération de la séquence chaotique. Si vous utilisez 1 bit par itération, il n'y a pas de limite de taille de nombre, car les valeurs possibles produites (0 ou 1) sont toujours equiprobables quel que soit le nombre de bits utilisé. Si on utilise 2 bits par itération, il est préférable d'utiliser des nombres de tailles supérieures ou égales à 16 bits, car par exemple en faisant le module 4 du compte bits 1 d'un nombre chaotique 8 bits (résultatant 0, 1, 2 ou 3), ces valeurs ne seraient pas equiprobables, mais avec des tailles de nombre de 16 bits, la différence de probabilité est déjà négligeable. Si vous utilisez 4 bits par itération, il est préférable d'utiliser des nombres supérieurs ou égaux à 256 bits. Le tableau suivant montre les probabilités de chaque valeur possible en fonction de la taille du nombre lors de la production de 4 bits pseudo-aléatoires par itération: Comme on peut le voir dans le tableau, si la taille des nombres est petite, nous n'obtiendrons pas des bits retournés suffisamment equiprobables pour crypter. Lorsque le nombre de bits produits par itération est un multiple de 8 entre 8 et 64 (tous les deux inclus) (FileEncoderType 2, 3, 4, 5, 6, 7 et 8): Dans ce cas, on prend des octets complets qui font partie de Xi pour les utiliser comme des nombres pseudo-aléatoires. Ce n'est pas exact, mais pour aller plus vite, il faut sortir les bits pseudo-aléatoires quelque part. Il n'est probablement pas aussi robuste que de compter le nombre de bits "1" du numéro Xi, mais je pense qu'il peut servir. Obtenir les bits pseudo-aléatoires par cette méthode est très rapide, il suffit d'attraper les octets pseudo-aléatoires directement. En outre, il permet de prendre un grand nombre de bits par itération. La condition à remplir entre le nombre de bits produits par itération et la taille en blocs (blocs de 31 bits, chaque bloc est stocké dans un long, qui est stocké dans un tableau de longs de longueur variable) est la suivante: NumeroBitsPorIteracion / 8.1.1994 3 x NumeroBloquesPorNumber Puisque vous prenez au mieux 3 octets de chaque bloc. Utilisation de fils d'exécution (parallélisme) Cette fonctionnalité n'est présente que dans les fileEncoderType 7 et 8. Ces types de cryptage ajoutent un support pour plusieurs fils d'exécution. Utilisation des fils: Lorsque le fichier crypté et le décrypté sont sur le même disque: Un fil fixe utilisé pour centraliser l'entrée/la sortie depuis/vers les fichiers. Ce fil alimente les fils de cryptage en lisant des tranches du fichier d'entrée et il est également chargé d'écrire le résultat dans le fichier de sortie. Un ensemble de fils de cryptage. Lorsque le fichier crypté et le décrypté sont sur des disques séparés: Un fil fixe utilisé pour centraliser la lecture du fichier d'entrée. Ce fil alimente les fils de cryptage en lisant les tranches du fichier d'entrée. Un fil fixe utilisé pour centraliser l'écriture dans le fichier de sortie. Ce fil reçoit des tranches à écrire, et il les écrit parallèlement à la lecture du fichier d'entrée. Un ensemble de fils de cryptage. Caractéristiques des fils de cryptage: Chaque fil de cryptage utilise un crypteur/descripteur propre et chacun de ces fils se caractérise par un index allant de 0 au nombre total de fils de cryptage utilisés. Chaque fil de cryptage recevra par ordre toutes les tranches avec une position de roulement conforme à l'index du fil module le nombre total de fils de cryptage. (c'est-à-dire que les tranches sont distribuées en ordre un pour chaque fil d'exécution). Chaque fil de cryptage utilise le crypteur/décrypteur pour crypter/décrypter en ordre les tranches correspondant au fichier d'entrée. Valeur optimale du nombre de fils de cryptage Cas d'un seul fil fixe à l'entrée/à la sortie Le nombre minimal de fils de cryptage qui minimise le temps total de traitement peut être calculé théoriquement avec cette formule: où: c'est le nombre optimal de fils de cryptage à utiliser est le temps de traitement (cryptage pur) d'une tranche est le temps de lecture d'une tranche est le temps d'écriture d'une tranche Nous devons dépendre des paramètres de cryptage (la taille des nombres à utiliser par le générateur pseudo-aléatoire et aussi le nombre de bits pseudo-aléatoires obtenus par itération). Il est évident que cela dépend également de la puissance du CPU. Et nous devons et dépendons de l'unité de stockage où se trouve le fichier d'entrée et où le fichier de sortie sera écrit. Cela dépendra également de savoir si le disque est utilisé à ces moments par une autre application, s'il est fragmenté, etc. Cas de fils d'entrée et de sortie séparés (dans le cas où les fichiers sont sur des disques séparés) Le nombre optimal de fils peut être calculé comme suit: Puisque les fils de lecture et d'écriture sur disque sont séparés (travaillant en parallèle), et le temps total qu'il faut pour lire et écrire une tranche, il peut être calculé comme le maximum entre le temps de lecture et celui d'écriture (qui sera en tout cas inférieur à la somme d'eux). Cela signifie que le nombre optimal de fils dans ce cas sera supérieur ou égal à celui du cas d'entrée et de sortie conjointe (sur le même disque). Limitations théoriques: Le nombre de fils de cryptage ne devrait pas être supérieur au nombre de fils en parallèle qui supporte le processeur moins le nombre de fils consacrés à la lecture/écriture de disque. (pour cela, vous pouvez utiliser le paramètre: -maxTotalNumOfThreads, qui limite automatiquement le nombre total de fils à utiliser). Le nombre de fils pris en charge par le processeur est généralement un multiple du nombre de cors du processeur. Par exemple, le processeur de mon PC est un i7, (4 cores), mais en raison de l'hyper-threading le nombre de fils simultanés que le processeur gère est de 8. Après le calcul du nombre optimal de fils de cryptage, ce résultat doit être limité à la limite théorique que nous venons de voir. C'est le cas, car il se pourrait que nous ayons un système avec le disque très rapide (temps d'entrée et de sortie) et un grand temps de traitement (processeur très lent). Dans ce cas, nous aurions une grande valeur optimum, qui pourrait être supérieure au nombre maximal de fils qu'il est recommandé d'utiliser (lié aux capacités de notre processeur). Dans ce cas, bien que nous ayons le disque très rapide, nous aurions le col de bouteille dans le processeur, et dans ce cas nous ne pourrions pas utiliser le nombre optimal de fils. L'option la plus rapide Si les fichiers sont sur des disques séparés, il est possible d'obtenir une plus grande efficacité et une plus grande occupation du CPU, en se traduisant par une plus grande rapidité de cryptage. (À condition que nous ayons un processeur suffisamment puissant). Idéalement, si l'on cherche rapidement dans le cryptage, il faut faire en sorte que les fichiers d'entrée et de sortie se trouvent sur des disques séparés. Mémoire utilisée Un autre point à prendre en compte est la mémoire utilisée par l'application. Plus le nombre de fils est élevé, plus la quantité de mémoire utilisée par l'application est élevée. C'est pourquoi il a été permis de créer une limite, pour éviter de très grandes valeurs insensées, qui utiliseraient beaucoup de mémoire du système. Types de cryptage L'application FileEncoderApplication permet de chiffrer sur la base d'un ensemble de types de cryptage qui s'élargit dans chaque version. Cela permet de maintenir la compatibilité en arrière, permettant d'augmenter sa fonctionnalité en ajoutant de nouveaux types de cryptage. Dans ce chapitre, nous détaillons les différents types de cryptage disponibles dans cette version de l'application. FileEncoderType-1 FileEncoderType non recommandé, qui fonctionne avec un générateur pseudo-aléatoire chaotique qui utilise intérieurement des nombres au format BigDecimal. L'inconvénient de ce générateur pseudo-aléatoire est qu'il est intimement lié à l'implémentation en Java, sa traduction vers d'autres langages de programmation possibles étant plus compliquée. En outre, en utilisant ce type de nombres, on perdait le contrôle et il se pourrait que l'implémentation de ce type ait changé entre les versions de Java, ce qui a rompu la compatibilité de l'application exécutée sur différentes versions de JRE. C'est pourquoi l'utilisation de ce type de cryptage n'est pas recommandée. Cependant, par compatibilité en arrière existe encore. Les caractéristiques de ce type de cryptage sont les suivantes: Basé sur des tranches. Chaque tranche est codée par un cryptage basé sur XOR. Chaque roulette réordonne ses bytes internes, pour rendre leur décryptage plus coûteux. Générateur pseudo-aléatoire chaotique basé sur la classe de Java BigDecimal. Paramètres: NumBytesFileSlice. Taille de roulette en octets. SizeOfNumbersSimpleEncoder. Taille des nombres BigDecimal (en octobres) qui composent le générateur pseudo-aleatorium XOR (rangue-> 1-127) SizeOfNumbersReorderEncoder. Taille des nombres BigDecimal (en bytes) qui constituent le générateur pseudo-aléatoire utilisé pour la réorganisation. (rangue-> 1-127) NumBitsPerIterationSimpleEncoder. Nombre de bits obtenus à partir du générateur pseudo-aleatorium dans chaque itération du générateur pseudo-aleatorium XOR. NumBitsPerIterationReorderEncoder. Nombre de bits qui sont obtenus à partir du générateur pseudo-aléatoire dans chaque itération du générateur pseudo-aléatoire pour la réorganisation. FileEncoderType-2 FileEncoderType obsolète, qui fonctionnait avec un générateur pseudo-aléatoire chaotique qui utilisait en interne des nombres au format BigLong qui est devenu BigLong_deprecated après avoir localisé un ERROR, qui apparaissait de temps en temps, mais qui apparaissait toujours lors du cryptage de fichiers moyens. C'est un type qui est maintenu par la compatibilité arrière, afin de pouvoir décoder des fichiers cryptés avec ce type de cryptage des versions précédentes de l'application. Les caractéristiques de ce type de cryptage sont les suivantes: Basé sur des tranches. Chaque tranche est codée par un cryptage basé sur XOR. Chaque rouleau réordonne ses octètes internes, pour rendre leur décryptage plus coûteux. Générateur pseudo-aléatoire chaotique basé sur la classe elle-même BigLong_deprecated, qui a une erreur grave. Paramètres: NumBytesFileSlice. Taille du rouleau en octets. SizeOfNumbersSimpleEncoder. Taille des numéros BigLong_deprecated (en blocs de 31 bits) qui composent le générateur pseudo-aleatorium XOR (rangue-> 1-127) SizeOfNumbersReorderEncoder. Taille des nombres BigLong_deprecated (en blocs de 31 bits) qui constituent le générateur pseudo-aléatoire utilisé pour la réorganisation. (rangue-> 1-127) NumBitsPerIterationSimpleEncoder. Nombre de bits obtenus à partir du générateur pseudo-aleatorium dans chaque itération du générateur pseudo-aleatorium XOR. NumBitsPerIterationReorderEncoder. Nombre de bits qui sont obtenus à partir du générateur pseudo-aléatoire dans chaque itération du générateur pseudo-aléatoire pour la réorganisation. FileEncoderType-3 FileEncoderType obsolète, qui est identique à l'ancien, mais avec la taille des nombres étendus pour profiter également du bit de signe de l'octet destiné à le stocker. Il s'agit d'un type qui est maintenu par compatibilité vers l'arrière, afin de pouvoir décoder des fichiers cryptés avec ce type de cryptage des versions précédentes. Les caractéristiques de ce type de cryptage sont les suivantes: Basé sur des tranches. Chaque tranche est codée par un cryptage basé sur XOR. Chaque rouleau réordonne ses octètes internes, pour rendre leur décryptage plus coûteux. Générateur pseudo-aléatoire chaotique basé sur la classe elle-même BigLong_deprecated, qui a une erreur grave. Paramètres: NumBytesFileSlice. Taille du rouleau en octets. SizeOfNumbersSimpleEncoder. Taille des numéros BigLong_deprecated (en blocs de 31 bits) qui composent le générateur pseudo-aleatorium XOR (rangue-> 1-256) SizeOfNumbersReorderEncoder. Taille des nombres BigLong_deprecated (en blocs de 31 bits) qui constituent le générateur pseudo-aléatoire utilisé pour la réorganisation. (rangue-> 1-256) NumBitsPerIterationSimpleEncoder. Nombre de bits obtenus à partir du générateur pseudo-aleatorium dans chaque itération du générateur pseudo-aleatorium XOR. NumBitsPerIterationReorderEncoder. Nombre de bits qui sont obtenus à partir du générateur pseudo-aléatoire dans chaque itération du générateur pseudo-aléatoire pour la réorganisation. FileEncoderType-4 FileEncoderType spécialement recommandé pour les petits fichiers. Il est identique à l'ancien, mais avec l'erreur de classe BigLong résolu. Les caractéristiques de ce type de cryptage sont les suivantes: Basé sur des tranches. Chaque tranche est codée avec un cryptage basé sur XOR. Chaque tranche réordonne ses octets en interne, pour rendre leur décryptage plus coûteux. Générateur pseudo-aléatoire chaotique basé sur la classe BigLong elle-même. Pour l'instant, aucune erreur n'a été trouvée. Paramètres: NumBytesFileSlice. Taille du rouleau sur les octets. SizeOfNumbersSimpleEncoder. Taille des numéros BigLong (en blocs de 31 bits) qui composent le générateur pseudo-aleatorium XOR (rangue-> 1-256) SizeOfNumbersReorderEncoder. Taille des nombres BigLong (en blocs de 31 bits) qui constituent le générateur pseudo-aléatoire utilisé pour la réorganisation. (rangue-> 1-256) NumBitsPerIterationSimpleEncoder. Nombre de bits obtenus à partir du générateur pseudo-aleatorium dans chaque itération du générateur pseudo-aleatorium XOR. NumBitsPerIterationReorderEncoder. Nombre de bits qui sont obtenus à partir du générateur pseudo-aléatoire dans chaque itération du générateur pseudo-aléatoire pour la réorganisation. FileEncoderType-5 FileEncoderType non recommandé. (car il a été créé pour de grands fichiers, mais avec une petite taille de roulement. Cela n'est pas recommandé, car la tête du disque dur va comme un fou, et pourrait être endommagé). Les caractéristiques de ce type de cryptage sont: Basé sur des tranches. Chaque tranche est codée avec un cryptage basé sur XOR. Chaque tranche réordonne ses octets internes, pour rendre leur décryptage plus coûteux. Les tranches réordonnent leur position pseudo-aléatoire. Générateur pseudo-aléatoire chaotique basé sur la classe BigLong elle-même. Pour l'instant, aucune erreur n'a été trouvée. Paramètres: NumBytesFileSlice. Taille du rouleau sur les octets. SizeOfNumbersSimpleEncoder. Taille des numéros BigLong (en blocs de 31 bits) qui composent le générateur pseudo-aleatorium XOR (rangue-> 1-256) SizeOfNumbersReorderEncoder. Taille des nombres BigLong (en blocs de 31 bits) qui constituent le générateur pseudo-aléatoire utilisé pour la réorganisation. (rangue-> 1-256) NumBitsPerIterationSimpleEncoder. Nombre de bits obtenus à partir du générateur pseudo-aleatorium dans chaque itération du générateur pseudo-aleatorium XOR. NumBitsPerIterationReorderEncoder. Nombre de bits qui sont obtenus à partir du générateur pseudo-aléatoire dans chaque itération du générateur pseudo-aléatoire pour la réorganisation. FileEncoderType-6 FileEncoderType (recommandé pour de très grands fichiers, sur des ordinateurs disposant de peu de mémoire RAM libre). Il est identique à celui du point précédent, mais en éliminant la réorganisation interne des octètes de chaque tranche. Il est utilisé pour les grands fichiers, car en supprimant la réorganisation interne des octètes de chaque tranche, la vitesse augmente considérablement. En outre, pour rendre ce type d'encryptage plus difficile à casser, une réorganisation pseudo-aléatoire de l'ordre des tranches du fichier est effectuée. Cela fait que (en moyenne), il faut décrypter la moitié des tranches du fichier crypté, pour obtenir la tranche initiale du fichier décrypté. De plus, les tranches peuvent être plus grandes (il n'y a plus besoin d'autant de mémoire pour la réorganisation des octètes de chaque tranche), en évitant le problème de tête expliqué dans le type précédent. Cependant, pour cette version de l'application, on a créé des types de cryptage plus rapides (qui utilisent plusieurs fils), spécialement conçus pour les grands fichiers, et qui font que ce type de cryptage n'est recommandé que lorsque peu de mémoire RAM libre est disponible sur le système. Les caractéristiques de ce type de cryptage sont les suivantes: Basé sur des tranches. Chaque tranche est codée avec un cryptage basé sur XOR. Les tranches réarrangent leur position pseudo-aléatoire. Générateur pseudo-aléatoire chaotique basé sur la classe BigLong elle-même. Pour l'instant, aucune erreur n'a été trouvée. Paramètres: NumBytesFileSlice. Taille du rouleau sur les octets. SizeOfNumbersSimpleEncoder. Taille des numéros BigLong (en blocs de 31 bits) qui composent le générateur pseudo-aleatorium XOR (rangue-> 1-256) NumBitsPerIterationSimpleEncoder. Nombre de bits obtenus à partir du générateur pseudo-aleatorium dans chaque itération du générateur pseudo-aleatorium XOR. FileEncoderType-7 FileEncoderType (recommandé pour de très grands fichiers). Si votre ordinateur a des problèmes de mémoire RAM libre, il faut configurer le nombre de fils de cryptage à 1. Il est identique à celui du point précédent, mais en utilisant plusieurs fils, ce qui est bien configuré, il peut accélérer le cryptage. Les caractéristiques de ce type de cryptage sont les suivantes: Basé sur des tranches. Chaque tranche est codée avec un cryptage basé sur XOR. Les tranches réarrangent leur position pseudo-aléatoire. Générateur pseudo-aléatoire chaotique basé sur la classe elle-même BigLong. Pour l'instant, aucune erreur n'a été trouvée. Plusieurs fils sont utilisés en parallèle: Lorsque le fichier crypté et le décrypté sont sur le même disque: Un fil séparé commun pour la lecture et l'écriture du disque. Un ou plusieurs fils à crypter. Lorsque le fichier crypté et le décrypté sont sur des disques différents: Un fil séparé pour la lecture du disque du fichier d'entrée. Un fil séparé pour l'écriture sur disque du fichier de sortie. Un ou plusieurs fils à crypter. Paramètres: NumBytesFileSlice. Taille de roulement en octets. SizeOfNumbersSimpleEncoder. Taille des numéros BigLong (en blocs de 31 bits) qui composent le générateur pseudo-aleatorium XOR (rangue-> 1-256) NumBitsPerIterationSimpleEncoder. Nombre de bits obtenus à partir du générateur pseudo-aleatorium dans chaque itération du générateur pseudo-aleatorium XOR. NumOfThreads. Nombre de fils de cryptage pour le fichier crypté et décrypté sur le même disque. NumOfThreadsForDifferentDrives. Nombre de fils de cryptage pour le fichier crypté et décrypté sur des disques différents. MaxTotalNumberOfThreads. Limite pour le nombre total de fils à utiliser (en comptant les fils de cryptage et ceux d'entrée et de sortie). FileEncoderType-8 FileEncoderType (recommandé pour de très grands fichiers). Particulièrement recommandé lorsque le disque où le fichier crypté sera écrit a une limite de taille maximale de fichier. Si votre ordinateur a des problèmes de mémoire RAM libre, il faut configurer le nombre de fils de cryptage à 1. Il est identique à celui du point précédent, mais en ajoutant la possibilité de définir une taille maximale de volume (le fichier crypté sera divisé en volumes, en respectant cette taille maximale). Les caractéristiques de ce type de cryptage sont les suivantes: Basé sur des tranches. Chaque tranche est codée avec un cryptage basé sur XOR. Les tranches réarrangent leur position pseudo-aléatoire. Générateur pseudo-aléatoire chaotique dans la classe elle-même BigLong. Pour l'instant, aucune erreur n'a été trouvée. Plusieurs fils sont utilisés en parallèle: Lorsque le fichier crypté et le décrypté sont sur le même disque: Un fil séparé commun pour la lecture et l'écriture du disque. Un ou plusieurs fils à crypter. Lorsque le fichier crypté et le décrypté sont sur des disques différents: Un fil séparé pour la lecture du disque du fichier d'entrée. Un fil séparé pour l'écriture sur disque du fichier de sortie. Un ou plusieurs fils à crypter. Avec la possibilité de diviser le fichier crypté en volumes. Paramètres: NumBytesFileSlice. Taille du rouleau en octets. SizeOfNumbersSimpleEncoder. Taille des numéros BigLong (en blocs de 31 bits) qui composent le générateur pseudo-aleatorium XOR (rangue-> 1-256) NumBitsPerIterationSimpleEncoder. Nombre de bits obtenus à partir du générateur pseudo-aleatorium dans chaque itération du générateur pseudo-aleatorium XOR. NumOfThreads. Nombre de fils de cryptage pour le fichier crypté et décrypté sur le même disque. NumOfThreadsForDifferentDrives. Nombre de fils de cryptage pour le fichier crypté et décrypté sur des disques différents. MaxTotalNumberOfThreads. Limite pour le nombre total de fils à utiliser (en comptant les fils de cryptage et ceux d'entrée et de sortie). SizeInBytesForVolumes. Taille maximale en octets pour chacun des volumes dans lesquels le fichier crypté sera divisé au moment du cryptage.