Les Snippets

Connexion

Hash par Weinberger

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 20/02/2009 11:46:58 et initié par SwitchApocalyps [Liste]
Date de mise à jour : 24/04/2009 11:27:38
Vue : 10835
Catégorie(s) : Base de données, Algorithme
Langages dispo pour ce code :
- C# 1.x, C# 2.x, C# 3.x
- VB 2005, VB 2008, VB.NET 1.x
- VB6, VBA
- Windev



Langage : C# 1.x , C# 2.x , C# 3.x
Date ajout : 20/02/2009
Posté par SwitchApocalyps [Liste]
       public static uint Weinberger(byte[] Key)
        {
            int taille = Key.Length;
            uint M = 109;
            uint temp = 0;
            uint Res = 0;
            for (int i = 0; i < taille; i++)
            {
                Res = (Res * 16) + (uint) Key[i];
                if (Res > 268435456)
                {
                    temp = (Res / 268435456) * 268435456;
                    // 268435456 = 228
                    Res = Res + (temp / 16777216);
                    // 16777216 = 224
                    Res = Res - temp;
                }
            }
            return (Res);// % M);
        }
Remarque :
Le véritable algorithme de Weinberger retourne le Modulo du calcul (d'ou le dernier commentaire).
Langage : VB.NET 1.x , VB 2005 , VB 2008
Date ajout : 23/04/2009
Posté par Bidou [Liste]
DateMAJ : 23/04/2009

Public Function Weinberger(ByVal Key As Byte()) As UInteger
   Dim taille As Integer = Key.Length 
   Dim temp As UInteger = 0
   Dim Res As UInteger = 0 
   Dim i As Integer = 0
   While i < taille 
      Res = (Res * 16) + Key(i)

      If Res > 268435456 Then

         temp = (Res / 268435456) * 268435456

         ' 268435456 = 228

         Res = Res + (temp / 16777216)

         ' 16777216 = 224

         Res = Res - temp

      End If

      i += 1

   End While

   Return (Res) ' Mod M);

End Function

Langage : VB6 , VBA
Date ajout : 24/04/2009
Posté par Renfield [Liste]
DateMAJ : 24/04/2009

Public Function HashWeinberger(ByRef vzIn As Variant) As Long
Dim nTmp As Long
Dim nRes As Long
Dim i As Integer
Dim xbIn() As Byte
    Select Case VarType(vzIn)
        Case vbString
            xbIn = StrConv(vzIn, vbFromUnicode)
        Case vbLong, vbInteger, vbByte, vbDouble, vbSingle
            xbIn = StrConv(Trim$(Str$(vzIn)), vbFromUnicode)
        Case vbArray Or vbByte
            xbIn = vzIn
        Case Else
            Err.Raise 13
            Exit Function
    End Select

    For i = 0 To UBound(xbIn)
        nRes = (nRes * 16) + xbIn(i)
        If nRes > 268435456 Then
            nTmp = (nRes / 268435456) * 268435456
            nRes = nRes + (nTmp / 16777216) - nTmp
        End If
    Next i
    HashWeinberger = nRes
Handler:
End Function


Langage : Windev
Date ajout : 14/12/2010
Posté par SwitchApocalyps [Liste]
PROCEDURE Weinberger(CleVal)
nRes est un entier sans signe sur 4 octets
nTemp est un entier sans signe sur 4 octets
ntmp est un entier sans signe sur 4 octets
nParc est un entier
//nMod est un entier = 187909
nTaille est un entier
sAConvert est une chaîne
tabEntiers est un tableau d'entiers sans signe sur 4 octets
SI EstNumérique(CleVal) ALORS
    sAConvert = CleVal
SINON
    sAConvert = CleVal
FIN
 nTaille = Taille(sAConvert)
 
 POUR nParc = 1 A nTaille
    Ajoute(tabEntiers,Asc(Milieu(sAConvert,nParc,1)))
FIN
nRes = 0
POUR CHAQUE nTemp DE tabEntiers
    nRes = (nRes * 16) + nTemp
    SI nRes > 268435456 ALORS
        ntmp = (nRes / 268435456) * 268435456
        nRes = nRes + (ntmp / 16777216)
        nRes = nRes - ntmp
    FIN
FIN
RENVOYER nRes // Modulo(nRes,nMod)

Remarque :
Le véritable algorithme de Weinberger retourne le Modulo du calcul (d'ou le dernier commentaire).

Snippets en rapport avec : Recherche, Hashage, Hash, Weinberger



Codes sources en rapport avec : Recherche, Hashage, Hash, Weinberger

{C / C++ / C++.NET} ALGORITHME DE RECHERCHE DICHOTOMIQUE
Bonjour, Voila, beaucoup sur ce site cherche souvent des méthodes pour recherche une variable dan...

{C / C++ / C++.NET} TABLE DE HASHAGE [TS ENVTS]
table de hashage correspondances entre une chaine clef & une chaine de donnée ci joint la d...

{Visual Basic, VB6, VB.NET, VB 2005} RECHERCHE DE MOTS DANS UN DICTIONNAIRE
Ce petit code permet de trouver un mot dans un fichier contenant le dictionnaire et ensuite en tapan...

{PHP} INSPECTEUR DE PAGES (VÉRIFIEZ SI DES SITES AFFICHENT UN TEXTE/CODE PARTICULIER)
Ce script PHP permet de scruter les codes sources de pages prédéfinies pour voir si un texte ou un c...

{Visual Basic, VB6, VB.NET, VB 2005} RECHERCHE & SAUVEGARDE DES FICHIERS PAR LEURS EXTENSIONS
C est un Vbscript pour rechercher des fichiers par leurs extensions et de les organiser en les copia...

{PHP} RECHERCHE DES DOUBLONS DANS UNE TABLE MYSQL EN SÉLECTIONNANT LE OU LES CHAMPS SUR LESQUELS LA RECHERCHE S'EFFECTUE.
Scripts php qui permettent la recherche des doublons sur une table mysql. Il est nécessaire d'intro...

{Visual Basic, VB6, VB.NET, VB 2005} RECHERCHE D'UN ENREGISTREMENT DANS UNE DATATABLE ET POSITIONNEMENT D'UN DATAGRIDVIEW SUR CET ENREGISTREMENT
Le DataSource du DataGridView doit être une BindingSource. Un BindingSource permet par sa fonctio...

{C / C++ / C++.NET} DESSINER UNE ARBRE BINAIRE( MODE CONSOLE):
Bonjour; car il est défficile d'imaginer la représentation d'une arbre binaire, je vous présente ...

{JAVA / J2EE} AUTOCOMPLETE EN SWING
Cette source permet de créer une champ de texte complété automatiquement avec les données contenues ...

{PHP} MOTEUR DE RECHERCHE SUR BASE MYSQL FULLTEXT ET BOOLEAN AVEC PAGINATION DES RESULTATS
BONJOUR Un moteur de recherche basique qui pourra s'intégrer dans un site d'annonces ou un blog. ...