Calcule

ratatouille53 Messages postés 30 Date d'inscription lundi 11 janvier 2016 Statut Membre Dernière intervention 10 décembre 2017 - 29 nov. 2017 à 23:06
tsainvet Messages postés 95 Date d'inscription samedi 27 mars 2004 Statut Membre 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

2 réponses

MiniApp Messages postés 654 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 22 février 2019 5
9 déc. 2017 à 18:46
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").
0
ratatouille53 Messages postés 30 Date d'inscription lundi 11 janvier 2016 Statut Membre Dernière intervention 10 décembre 2017
10 déc. 2017 à 11:08
merci pour l info ,

cordialement
0
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 14
10 déc. 2017 à 11:23
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
0
tsainvet Messages postés 95 Date d'inscription samedi 27 mars 2004 Statut Membre Dernière intervention 14 décembre 2017
14 déc. 2017 à 17:19
merci pour cette proposition intéressante je vais la tester merci
0
Rejoignez-nous