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

Algorithmes et structures de données Discussion :

[Cryptage] A-Z _ 0-9


Sujet :

Algorithmes et structures de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 161
    Points : 116
    Points
    116
    Par défaut [Resolu] [Cryptage] A-Z _ 0-9
    Bonjour

    Je cherche un cryptage qui me donnerait en sortie un mot composé seulement de A-Z _ et 0-9. C’est pour crypter des noms de tables dans une base MySQL, c’est pour ça que j'aimerais qu'une fois codé il n'y ai que les lettres de l'alphabet, les chiffres et l'anderscore (_).

    Si quelqu'un connaît un algo ou saurait ou je pourrais trouver une aide?

    Je programme en Delphi mais un algo pourrait me suffire car je le coderais moi même.

    Merci d'avance

  2. #2
    AP
    AP est déconnecté
    Membre confirmé
    Avatar de AP
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2002
    Messages : 480
    Points : 538
    Points
    538
    Par défaut
    si tu veux pas vraiment un cryptage mais plutot un masqage tu peux utiliser le base64 sinon tu peux toujours crypter puis appliquer le base 64
    tu peux par exemple crypter avec md5

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 161
    Points : 116
    Points
    116
    Par défaut
    Le problème du Base64 c que ca va qd même me donner des caractères comme \ / : = etc... ce qui ne passe pas pour un nom de table Mysql

  4. #4
    Responsable technique

    Avatar de Anomaly
    Homme Profil pro
    Directeur
    Inscrit en
    Juin 2003
    Messages
    10 334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Directeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 334
    Points : 130 266
    Points
    130 266
    Billets dans le blog
    1
    Par défaut
    Fabrique-toi une sorte de "base8" alors ; tu codes en base64, et tu remplaces chaque caractère base64 par 2 caractères pris dans un alphabet de 8 caractères (par exemple 0-7). Ça va doubler ta taille mais bon ce n'est qu'une suggestion
    Responsable technique forum & site

    Si ce message (ou un autre) vous a aidé et/ou vous semble pertinent, votez pour lui avec

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 161
    Points : 116
    Points
    116
    Par défaut
    En fait je crois que ce qu'il me faudrais faire c un Base64.
    Le truc c que j'ai chopé sur internet un Base64 tout fait pour Delphi et au début j'ai cette liste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    B64Table= 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
    Il faudrait peut etre que je remplace "+" et "/" par "-" et "_". (qui sont acceptés par mysql)

    Le seul truc qui me parait louche c que qd je passe des trucs ds la Base64 des fois j'ai "=" et d'autres symboles. Donc je me demande si la liste au début du code a vraiment un rapport avec le Base64.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 161
    Points : 116
    Points
    116
    Par défaut
    En fait je viens de voir que le "=" était accepté par Mysql je vais essayer de changer le "+" et le "/" et voir ce que ca donne.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 161
    Points : 116
    Points
    116
    Par défaut
    J'aurais encore une question.

    Voila j'ai un autre problème car Mysql ne me garde pas les majuscules pour les noms de tables. Donc je pense qu'il faut que je programme un BaseX avec que les minuscules.

    Déjà je débute complet donc si je me trompe vous me le dite.
    Le mieux je pense ça serait de faire un Base32 dans lequel je mets les lettres de l'alphabet en minuscule et des chiffres pour combler ce qu'il manque. Et si je ne me trompe pas il faut donc que je découpe en 8 lettres pour coder ce que j'ai une fois crypté.
    Voila si quelqu'un pouvait me dire si je me trompe ou s'il y a une meilleure solution, car j'aimerais un avis avant de commencer à coder pour rien.

    Merci d'avance

  8. #8
    Responsable technique

    Avatar de Anomaly
    Homme Profil pro
    Directeur
    Inscrit en
    Juin 2003
    Messages
    10 334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Directeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 334
    Points : 130 266
    Points
    130 266
    Billets dans le blog
    1
    Par défaut
    Hum ! L'avantage du base64 (le nombre n'a pas été choisi au hasard) c'est que 2 ^ 6 = 64 bits, donc pour coder 3 octets (3 * 2 ^ 8 ) il faut très exactement 4 caractère en base64 (4 * 2 ^ 6), car 3 * 2 ^ 8 = 4 * 2 ^ 6

    Si tu veux coder chaque caractère sur 5 bits, il te faudra beaucoup de caractères pour obtenir un nombre d'octets entiers (pas envie de compter...)

    Boh en fait après réflexion ct pas dur à calculer lol
    5 octets seront équivalents à 8 caractères codés sur 5 bits.

    Mais tu vas t'embêter car pour le premier octet tu auras 5 bits collés à gauche, pour le 2ème, 3 bits à droite et 2 bits dans le suivant, pour le troisième 5 bits au milieu, pour le quatrième, 1 bit à droite et... etc...

    Ceci dit si tu te sens d'aplomb, pourquoi pas ?

    PS: message édité pleins de fois pour éviter l'apparition de smileys particulièrement inopportuns dans mes formules
    PS2: ... et aussi des fôtes d'ortofrafe
    Responsable technique forum & site

    Si ce message (ou un autre) vous a aidé et/ou vous semble pertinent, votez pour lui avec

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 161
    Points : 116
    Points
    116
    Par défaut
    Heu en fait je le sent pas trop
    T'aurais pas une soluce pour mon problème?
    Mysql me prend pas les MaJ c le seul truc qui m'embete

  10. #10
    Responsable technique

    Avatar de Anomaly
    Homme Profil pro
    Directeur
    Inscrit en
    Juin 2003
    Messages
    10 334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Directeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 334
    Points : 130 266
    Points
    130 266
    Billets dans le blog
    1
    Par défaut
    Comme je t'ai suggéré plus haut, le plus simple à mon avis c'est de coder ton texte en base64 avec les fonctions du langage, et ensuite de le "rerecoder" toi-même en une sorte de "base8" qui présente l'avantage d'être simple à faire, car 1 caractère base64 = 2 caractères "base8"

    Par exemple, si je choisis l'alphabet 0-7 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    A = 00
    B = 01
    C = 02
    ...
    H = 07
    I = 10
    J = 11
    ...
    P = 17
    Q = 20
    ...
    Z = 31
    a = 32
    ...
    et ainsi de suite.
    Responsable technique forum & site

    Si ce message (ou un autre) vous a aidé et/ou vous semble pertinent, votez pour lui avec

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 161
    Points : 116
    Points
    116
    Par défaut
    Merci je vais essayer ta soluce

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 161
    Points : 116
    Points
    116
    Par défaut
    Pour ta solution ça marchait bien sauf que le résultat était trop grand ce qui posait problème car MySQL n'en voulait pas.
    Donc pour remédier à ce problème j'ai un peu modifier ton idée et je vais l'expliquer au cas ou quelqu'un serait dans le même cas que moi.

    Donc au lieu de mettre 2 chiffres pour coder une lettre je me suis dit pourquoi ne pas non plus utiliser les lettres minuscules puisqu'elles passent.
    Donc voila comment je compte:
    Essayez de me suivre car même moi j'ai eu du mal à me suivre quand je l'ai fait.

    Voila les caractères que je vais utiliser pour coder :
    abcdefghijklmnopqrstuvwxyz0123456789_=
    Et voila les caractères à coder : (ce son les caractères de mon Base64)
    abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-_=

    On remarque que le nombre de caractères à coder et plus grand que le nombre de caractères pour coder. Normal car je ne peux pas utiliser les MAJ.
    Comme le nombre de caractères pour coder est supérieur à la moitié des nombres de caractères à coder, il me faut savoir quand je passe dans la deuxième moitié de la liste des caractères à coder. C'est pour ça que je me suis garder le caractère "-".
    Quand je passe dans la deuxième moitié je mets le caractère "-" et je reprends la liste des caractères pour coder au début.
    Ex Coder "C" : C -a

    Donc quand je décode si je tombe sur le caractère "-" je vais chercher le caractère suivant, je regarde à quel position il se trouve ds ma liste de caractères pour coder, puis à cette position j'y ajoute la longueur de la liste de caractères pour coder et j'ai la position du caractère ds la liste des caractères à coder.

    Voila j'espère que ça aidera quelqu'un mais j'ai un peu peur de l'embrouiller car je ne suis pas très fort au niveau explication.
    Merci pour tout

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

Discussions similaires

  1. Cryptage de fichier
    Par :GREG: dans le forum Composants VCL
    Réponses: 6
    Dernier message: 18/12/2008, 09h43
  2. Cryptage de colonnes sous Oracle
    Par Julian Roblin dans le forum SQL
    Réponses: 9
    Dernier message: 28/11/2006, 18h24
  3. Cryptage
    Par Claythest dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 04/06/2003, 15h20
  4. cryptage
    Par giminik dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 06/11/2002, 22h46
  5. Cryptage en C selon la méthode de césat
    Par shenron dans le forum C
    Réponses: 2
    Dernier message: 31/05/2002, 08h22

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