Question

La question s'adresse à tous les langages modernes non gérés.C-like languages, delphi, n'importe quoi.

J'aimerais créer mon propre algorithme de cryptographie qui, contrairement à d'autres, diminue la longueur de la chaîne cryptée.

Ma première pensée a été de créer mon propre système numérique similaire à l'hexadicimal, mais avec plus de caractères.Par exemple [0..9] + [A..Z]. Cela ferait un nombre allant jusqu'à 40 en une valeur numérique. Je pourrais aussi ajouter d'autres chiffres tels que '!,. /?) (#!' Etc.).

Ma question est de savoir comment implémenter un tel système numérique de A à Z en incluant 0 à 9. Dois-je déclarer chaque valeur comme constante jusqu'à 0xZZZZZZZZ? cela rendrait ma vie terrible

Donnez-moi s'il vous plaît vos suggestions, exemples. :)

Était-ce utile?

La solution

Pensons à ce sujet.

Chaque base 40 caractères occupe 8 bits. Il code un nombre compris entre 0 et 39, ce qui n’est qu’un cheveu de plus de 5 bits d’informations réelles.

Un seul octet peut représenter 256 valeurs différentes. Un codage en base 40 ne représente que 40 valeurs différentes dans le même octet.

Cela semble être une perte nette de 2-3 bits par octet codé.

Ceci étant dit, une valeur de base 40 EST une chaîne et rien de plus. Aucune déclaration de base de données sophistiquée n'est requise - il s'agit simplement d'une chaîne.

Vous écrivez deux fonctions: toBase40 (someBytes) et toBytes (someBase40string) pour convertir vos chaînes base40 en chaînes ordinaires.

Si vous souhaitez une solution bien élaborée, recherchez base64 .

Autres conseils

Il vous faudrait changer le mode de fonctionnement des ordinateurs et du stockage.

Il n’ya pas de mémoire libre et il n’ya aucun moyen d’obtenir de l’espace gratuitement. Changer de système de numération vous donnerait plus d’espace lorsque vous l’écrirez sur papier, mais dans la mémoire de votre ordinateur, vous aurez toujours besoin de la même quantité de bits.

Notez également que, si vous souhaitez chiffrer quelque chose, cette opération empêche également toute compression significative, car le contenu chiffré doit être aussi aléatoire que possible.

Généralement, une compression de formulaire est effectuée AVANT le chiffrement (GZip ou quelque chose de similaire), mais cela ne fonctionne pas en changeant les systèmes de numérotation.

P.S. Utilisez un algorithme de cryptage éprouvé.

Généralement, pour que les algorithmes de cryptage réduisent la taille du texte crypté, le texte passe d'abord par un algorithme de compression général, puis le cryptage du résultat compressé. Vous obtiendrez presque toujours un meilleur résultat de cette façon que d'essayer de combiner les deux algorithmes en un seul.

Les personnes qui ont mis au point des algorithmes de cryptage ont probablement passé des millions d’heures de travail, des années de formation et des post-doctorants à acquérir leur expertise. Qu'est-ce qui vous fait penser que vous pouvez trouver quelque chose de mieux?

Vous allez probablement trouver un algorithme non sécurisé.

Utilisez un algorithme existant et utilisez la compression.

Je recommanderais simplement de compresser l'entrée (en utilisant gzip, zlib ou autre) avant de la chiffrer. C'est plus facile et plus sûr que de créer votre propre algorithme. (GnuPG fait cela, par exemple.)

Les chaînes Base64 sont courantes dans de nombreux langages informatiques et sont plutôt standard. Il utilise les caractères suivants:

  

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 + /

Voir http://fr.wikipedia.org/wiki/Base64 pour plus d'informations.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top