begin process at 2012 05 24 03:06:35
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Delphi et asm

 > HASHCODE D'UNE STRING

HASHCODE D'UNE STRING


 Information sur la source

Note :
Aucune note
Catégorie :Delphi et asm Niveau :Débutant Date de création :14/03/2003 Date de mise à jour :14/03/2003 19:22:27 Vu :6 519

Auteur : Emandhal

Ecrire un message privé
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

 Description

Code assez simple si le Pchar pour la String gene faites :
HashName(PChar(VariableDeTypeString)); pour lancer le Hash
Y'a pas de limitation de taille de la chaine...

Source

  • Function HashName(aString: PChar): Integer;
  • asm
  • mov ecx,eax
  • xor eax,eax
  • @loop:
  • mov dl,[ecx]
  • test dl,dl
  • jz @Out
  • rol eax,5
  • xor al,dl
  • inc ecx
  • jmp @loop
  • @Out:
  • End;
Function HashName(aString: PChar): Integer;
asm
  mov ecx,eax
  xor eax,eax
@loop:
  mov  dl,[ecx]
  test dl,dl                       
  jz   @Out
  rol  eax,5
  xor  al,dl
  inc  ecx
  jmp  @loop
@Out:
End;

 Conclusion

En fait il utilise le XOR pour que chaque caractere influence le hash. Et il decale la valeur de 5 bit a chaque caractere injecté. En utilisant le rol, le decalage fait réentrer les bits qui sortent a gauche, à droite, s'assurent ainsi que chaque caractere garde son influence sur le hash final.
Le plus simple des hashcode consiste en  un XOR de tous les caractere. Mais dans ce cas là, on obtiendrait que 256 clefs differentes ce qui est trop faible. Alors on a rajouté le decalage pour couvrir autant de bits que possible. Ce qui donne un hash sur 32bits, soit 4MM de solutions, c beaucoup mieux :)

PS: le rol 5 en pascal ca fait un truc du genre A:=((A and _F8000000) shr 27) or ((A and _07FFFFFF) shl 5);

code de Bkg2k :)


 Sources de la même categorie

Source avec Zip APPELER UNE API EN ASM AVEC DELPHI par DeadlyPredator
RENVOIT UNE CHAINE DE X FOIS LE CARACTÈRE DEMANDÉ par cutmaster
PETIT ÉQUIVALENT DU ?: DU C EN DELPHI POUR LES CHAINES, LONG... par cutmaster
AVOIR LE NOM DU JOUR DE LA SEMAINE DÉSIGNÉ par cutmaster
REMPLISSAGE FORMATÉ D'UN SHORTSTRING par cutmaster

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,950 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales