Calcule

Messages postés
30
Date d'inscription
lundi 11 janvier 2016
Dernière intervention
10 décembre 2017
- - Dernière réponse : tsainvet
Messages postés
96
Date d'inscription
samedi 27 mars 2004
Dernière intervention
14 décembre 2017
- 14 déc. 2017 à 17:19
bonjour a tous ;-)

j'aurais besoin d une info !!

j'ai une chaine de type :1008B10A0201CME4893799

1008B10A0201 CME4893799
qui correspond a :mac adresse et une référence

j aimerais pouvoir manipuler cette ligne de chiffres et de lettres pour généré un numéro de licence qui serait de la même longueur.
la clé de calcule pourrait être un nom ou ou un mail peu importe.

j'ai bien vue quelques exemples mais qui n'accepte pas chiffre et lettre pour générer un code , alors avant de faire quoi que ce soit j aimerais voir si vous auriez des idées ou proposition qui me métrais sur une voie sur ..

Merci

cordialement a tous
Afficher la suite 

Votre réponse

2 réponses

Messages postés
654
Date d'inscription
lundi 21 juillet 2014
Dernière intervention
5 décembre 2018
0
Merci
Bonjour,

Une système de hachage type SHA1 ou autre pourrait convenir, la clé fera toujours la même taille (par exemple j'obtient "79d58526d0e0bf4df4f01b383ed3f49c428aaa2a" pour mon "~/.profile").
ratatouille53
Messages postés
30
Date d'inscription
lundi 11 janvier 2016
Dernière intervention
10 décembre 2017
-
merci pour l info ,

cordialement
Commenter la réponse de MiniApp
Messages postés
692
Date d'inscription
jeudi 17 avril 2008
Dernière intervention
14 septembre 2018
0
Merci
Salut
Clé en main une fonction codage et décodage :

CONST
KZ1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 0123456789';
KZ2 = 'DhijklEFbcGH67IJKNO345PTUV28WXYZadLMefgmnQRSopqrsABCtuvwxyz 019';
KZ3 = '123456789012345678901234567890123456789012345678901234567890123';
Kmax = 63;


Function Codage(CH1:string; CLE:string):string;
var CH2:string; // chaine codée transmise par result
      i,Lch1,Nch1,Ncle,Xcle,Lcle,Ncod,Lcar,decal : integer;
begin
Lch1 := length(CH1);  // longueur  de la chaine à coder
Lcle := length(CLE);  // longueur de la clé
CH2 := dupestring('*',Lch1); // initialisation de la chaine codée
Xcle := 0; // initialisation du balayage clé
for i:=1 to Lch1 do begin
    Nch1 := pos(CH1[i],KZ1); // position du carac à coder dans la chaine KZ1
    if Nch1=0 then
       begin
       CH2[i] := CH1[i];
       continue;
       end;
    if Lch1=0 then
       begin
       CH2[i] := CH1[i];
       continue;
       end;
    Inc(Xcle); if Xcle>Lcle then Xcle := 1;
    Ncle := pos(CLE[Xcle],KZ1); // position du carac courant de la clé dans la chaine KZ1
    Decal := StrToInt(KZ3[Ncle]); // décalage du à la clé à apporter pour coder le carac
    Ncod := Nch1 + Decal;
    if Ncod>Kmax then Ncod := Ncod - Kmax;
    CH2[i] := KZ2[Ncod];
    end;
result := CH2;
end;


Function DeCodage(CH2:string; CLE:string):string;
var CH1:string; // chaine codée transmise par result
      i,Lch2,Nch2,Ncle,Xcle,Lcle,Ncod,Lcar,decal : integer;
begin
Lch2 := length(CH2);  // longueur  de la chaine à coder
Lcle := length(CLE);  // longueur de la clé
CH1 := dupestring('*',Lch2); // initialisation de la chaine codée
Xcle := 0; // initialisation du balayage clé
for i:=1 to Lch2 do begin
    Nch2 := pos(CH2[i],KZ2); // position du carac à coder dans la chaine KZ2
    if Nch2=0 then
       begin
       CH1[i] := CH2[i];
       continue;
       end;
    Inc(Xcle); if Xcle>Lcle then Xcle := 1;
    Ncle := pos(CLE[Xcle],KZ1); // position du carac courant de la clé dans la chaine KZ1
    Decal := StrToInt(KZ3[Ncle]); // décalage du à la clé à apporter pour coder le carac
    Ncod := Nch2 - Decal;
    if Ncod<1then Ncod := Ncod + Kmax;
    CH1[i] := KZ1[Ncod];
    end;
result := CH1;
end;


Dans cette version ,la clé ne doit comporter que des lettres (A-Z,a-z) des chiffres (0-9) et l'espace
(pas de lettres accentuées)
La chîne à coder peut être quelconque
tsainvet
Messages postés
96
Date d'inscription
samedi 27 mars 2004
Dernière intervention
14 décembre 2017
-
merci pour cette proposition intéressante je vais la tester merci
Commenter la réponse de dubois77

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.