UDF > Crypt >


_Crypt_HashData

Hache les donn�es avec l'algorithme sp�cifi�

#include <Crypt.au3>
_Crypt_HashData ( $vData, $iAlgID [, $bFinal = True [, $hCryptHash = 0]] )

Param�tres

$vData Donn�es � hacher
$iAlgID ID de hashage � utiliser. Voir _Crypt_DeriveKey().
$bFinal [optionnel] False si c'est seulement un segment de donn�es complet, et fait que la fonction retourne un objet de hachage au lieu d'un hachage
$hCryptHash [optionnel] Objet de hachage retourn� par un pr�c�dent appel � _Crypt_HashData()

Valeur de retour

Succ�s: Retourne un hachage binaire ou un objet de hachage si $bFinal = False.
�chec: D�finit @error <> 0.
@error: 10 - Impossible de cr�er l'objet de hachage
20 - Impossible de hacher les donn�es
30 - Impossible d'obtenir la taille de hachage
40 - Impossible d'obtenir le hachage
1000+ Erreur dans _Crypt_Startup()

Remarque

La synth�se de hachage (hash digest) sera retourn�e comme une cha�ne binaire, la taille est sp�cifi�e par l'algorithme.
Pour utiliser ceci avec des segments de donn�es, mettez le flag $bFinal � False pour tous les segments non finaux et utilisez l'objet de hachage retourn� avec tous les appels ult�rieurs.

En relation

_Crypt_HashFile

Voir aussi

Recherchez CryptHashData dans la biblioth�que MSDN.

Exemple

#include <ComboConstants.au3>
#include <Crypt.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StringConstants.au3>
#include <WinAPIConv.au3>
#include <WindowsConstants.au3>

Global $g_iAlgorithm = $CALG_SHA1, $g_idInputEdit = -1, $g_idOutputEdit = -1

Example()

Func Example()
    Local $hGUI = GUICreate("Hachage en temps r�el", 400, 320)
    $g_idInputEdit = GUICtrlCreateEdit("", 0, 0, 400, 150, $ES_WANTRETURN)
    $g_idOutputEdit = GUICtrlCreateEdit("", 0, 150, 400, 150, $ES_READONLY)
    Local $idCombo = GUICtrlCreateCombo("", 0, 300, 100, 20, $CBS_DROPDOWNLIST)
    GUICtrlSetData($idCombo, "MD2 (128bit)|MD4 (128bit)|MD5 (128bit)|SHA1 (160bit)|SHA_256|SHA_384|SHA_512", "SHA1 (160bit)")
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
    GUISetState(@SW_SHOW, $hGUI)

    _Crypt_Startup() ; Ex�cute la biblioth�que crypt pour optimiser les performances.

    Local $dHash = 0, $sRead = "", $iMsg = GUIGetMsg()

    While $iMsg <> $GUI_EVENT_CLOSE
        If $iMsg = $idCombo Then ; V�rifie si le combobox est s�lectionn� et r�cup�re le bon algorithme.
            Switch GUICtrlRead($idCombo) ; Lit la s�lection du combobox.
                Case "MD2 (128bit)"
                    $g_iAlgorithm = $CALG_MD2

                Case "MD4 (128bit)"
                    $g_iAlgorithm = $CALG_MD4

                Case "MD5 (128bit)"
                    $g_iAlgorithm = $CALG_MD5

                Case "SHA1 (160bit)"
                    $g_iAlgorithm = $CALG_SHA1

                Case  "SHA_256"
                    $g_iAlgorithm = $CALG_SHA_256

                Case "SHA_384"
                    $g_iAlgorithm = $CALG_SHA_384

                Case "SHA_512"
                    $g_iAlgorithm = $CALG_SHA_512

            EndSwitch

            $sRead = GUICtrlRead($g_idInputEdit)
            If StringStripWS($sRead, $STR_STRIPALL) <> "" Then ; V�rifie qu'il y a du texte � hacher.
                $dHash = _Crypt_HashData($sRead, $g_iAlgorithm) ; Cr�e un hachage du texte entr�.
                GUICtrlSetData($g_idOutputEdit, $dHash) ; D�finit la bo�te de dialogue de sortie avec les donn�es de hachage.
            EndIf
        EndIf

        $iMsg = GUIGetMsg()
    WEnd

    GUIDelete($hGUI) ; Supprime la GUI pr�c�dente et tous ses contr�les.
    _Crypt_Shutdown() ; Arr�te la biblioth�que crypt.
EndFunc   ;==>Example

Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $lParam

    If _WinAPI_LoWord($wParam) = $g_idInputEdit Then
        If _WinAPI_HiWord($wParam) = $EN_CHANGE Then
            Local $dHash = _Crypt_HashData(GUICtrlRead($g_idInputEdit), $g_iAlgorithm) ; Cr�e un hachage du texte entr�.
            GUICtrlSetData($g_idOutputEdit, $dHash) ; D�finit la bo�te de dialogue de sortie avec les donn�es de hachage.
        EndIf
    EndIf
EndFunc   ;==>WM_COMMAND