Ce n'est pas une certification étant donné qu'au moins deux flux différents peuvent générer la même clé.
Voici l'algorithme en Up ! 5GL :
/****************************************************************/
Fonction CalculerSignatureAdler32(Flux : Nul Ou IFlux) Retourner Nul Ou Binaire
/* Objet : Calcule la signature Adler. */
/****************************************************************/
Constante
/*******/
BaseAdler=65521;
Variable
/******/
S1 : Entier;
S2 : Entier;
TableEntiers : Tableau[4] De Nul Ou Entier;
Debut
/* Calcul de la signature. */
TantQue Non Flux.FinDeFlux Faire
Flux.Lire(B,1);
Fin TantQue
S1=(S1+B[0])%BaseAdler;
S2=(S1+S2)%BaseAdler;
/* Generation de la signature. */
TableEntier[0]=S1&0x00FF;
TableEntier[1]=(S1&0xFF00)>>8;
TableEntier[2]=S2&0x00FF;
TableEntier[3]=(S2&0xFF00)>>8;
Retourner Binaire(TableEntiers);
Fin Fonction