Chiffre les données à l'aide de la clé fournie
#include <Crypt.au3>
_Crypt_EncryptData ( $vData, $vCryptKey, $iAlgID [, $bFinal = True] )
$vData | Données à chiffrer/déchiffrer |
$vCryptKey | Mot de passe ou handle d'une clé si le flag CALG_USERKEY est spécifié |
$iAlgID | L'algorithme à utiliser |
$bFinal | [optionnel] False si c'est seulement un segment de données complet |
Succès: | Retourne une chaîne binaire contenant les données chiffrées. |
Échec: | Retourne -1 et définit @error <> 0. |
@error: | 50 - Impossible de déterminer la mémoire tampon 60 - Impossible de chiffrer les données 10 to 30 - Ne peut créer la clé 80 - Impossible de récupérer $CALG_USERKEY AlgID 1000+ Erreur dans _Crypt_Startup() |
Retourne une chaîne binaire quel que soit l'entrée
Si $vData contient des caractères non ANSI il doit être passé comme StringToBinary(..., $SB_UTF8). Voir Exemple 3.
_Crypt_DecryptData, _Crypt_DeriveKey, _Crypt_EncryptFile
Recherchez CryptEncrypt dans la bibliothèque MSDN.
#include <ComboConstants.au3> #include <Crypt.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <MsgBoxConstants.au3> #include <StringConstants.au3> #include <WinAPIConv.au3> #include <WindowsConstants.au3> Global $g_hKey = -1, $g_idInputEdit = -1, $g_idOutputEdit = -1, $g_idOutputDeCrypted = -1 Example() Func Example() Local $hGUI = GUICreate("Realtime (En/DE)cryption", 400, 470) $g_idInputEdit = GUICtrlCreateEdit("", 0, 0, 400, 150, $ES_WANTRETURN) $g_idOutputEdit = GUICtrlCreateEdit("", 0, 150, 400, 150, $ES_READONLY) $g_idOutputDeCrypted = GUICtrlCreateEdit("", 0, 300, 400, 150, $ES_READONLY) Local $idCombo = GUICtrlCreateCombo("", 0, 450, 100, 20, $CBS_DROPDOWNLIST) GUICtrlSetData($idCombo, "3DES (168bit)|AES (128bit)|AES (192bit)|AES (256bit)|DES (56bit)|RC2 (128bit)|RC4 (128bit)", "RC4 (128bit)") GUIRegisterMsg($WM_COMMAND, "WM_COMMAND") GUISetState(@SW_SHOW, $hGUI) _Crypt_Startup() ; Pour optimiser les performances, démarre la librarie crypt. Local $iAlgorithm = $CALG_RC4 $g_hKey = _Crypt_DeriveKey(StringToBinary("CryptPassword"), $iAlgorithm) ; Déclare un mot de passe et l'algorithme pour créer une clé cryptographique. Local $iMsg = GUIGetMsg() While $iMsg <> $GUI_EVENT_CLOSE If $iMsg = $idCombo Then ; Teste si la combobox est sélectionnée et récupère l'algorithme correct. Switch GUICtrlRead($idCombo) ; Lit la sélection de la combobox. Case "3DES (168bit)" $iAlgorithm = $CALG_3DES Case "AES (128bit)" $iAlgorithm = $CALG_AES_128 Case "AES (192bit)" $iAlgorithm = $CALG_AES_192 Case "AES (256bit)" $iAlgorithm = $CALG_AES_256 Case "DES (56bit)" $iAlgorithm = $CALG_DES Case "RC2 (128bit)" $iAlgorithm = $CALG_RC2 Case "RC4 (128bit)" $iAlgorithm = $CALG_RC4 EndSwitch _Crypt_DestroyKey($g_hKey) ; Détruit la clé cryptographique. $g_hKey = _Crypt_DeriveKey(StringToBinary("CryptPassword"), $iAlgorithm) ; Re-déclare un mot de passe et l'algorithme pour créer une nouvelle clé cryptographique. Local $sRead = GUICtrlRead($g_idInputEdit) If StringStripWS($sRead, $STR_STRIPALL) <> "" Then ; Teste s'il y a du texte disponible à chiffrer. Local $dEncrypted = _Crypt_EncryptData($sRead, $g_hKey, $CALG_USERKEY) ; Chiffre le texte avec la nouvelle clé cryptographique. GUICtrlSetData($g_idOutputEdit, $dEncrypted) ; Définit la boîte de sortie avec le texte chiffré. Local $dDecrypted = _Crypt_DecryptData($dEncrypted, $g_hKey, $CALG_USERKEY) ; Déchiffre le texte avec la nouvelle clé cryptographique. GUICtrlSetData($g_idOutputDeCrypted, BinaryToString($dDecrypted)) ; Définit la boîte de sortie avec le texte chiffré. EndIf EndIf $iMsg = GUIGetMsg() WEnd GUIDelete($hGUI) ; Supprime la GUI et tous ses contrôles. _Crypt_DestroyKey($g_hKey) ; Détruit la clé cryptographique. _Crypt_Shutdown() ; Arrête la librairie 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 $dEncrypted = _Crypt_EncryptData(GUICtrlRead($g_idInputEdit), $g_hKey, $CALG_USERKEY) ; Chiffre le texte avec la clé cryptographique. GUICtrlSetData($g_idOutputEdit, $dEncrypted) ; Définit la boîte de sortie avec le texte chiffré. Local $dDecrypted = _Crypt_DecryptData($dEncrypted, $g_hKey, $CALG_USERKEY) ; Déchiffre le texte avec la nouvelle clé cryptographique. GUICtrlSetData($g_idOutputDeCrypted, BinaryToString($dDecrypted)) ; Définit la boîte de sortie avec le texte chiffréé. EndIf EndIf EndFunc ;==>WM_COMMAND
#include <Crypt.au3> #include <MsgBoxConstants.au3> Example() Func Example() ; Chiffre du texte en utilisant un mot de passe générique. Local $dEncrypted = StringEncrypt(True, 'Encrypt this data.', 'securepassword') ; Affiche le texte chiffré. MsgBox($MB_SYSTEMMODAL, 'Chiffré', $dEncrypted) ; Déchiffre le texte chiffré en utilisant le mot de passe générique. Local $sDecrypted = StringEncrypt(False, $dEncrypted, 'securepassword') ; Affiche le texte déchiffré. MsgBox($MB_SYSTEMMODAL, 'Déchiffré', $sDecrypted) EndFunc ;==>Example Func StringEncrypt($bEncrypt, $sData, $sPassword) _Crypt_Startup() ; Démarre la librairie Crypt. Local $vReturn = '' If $bEncrypt Then ; Si le flag est défini à True alors chiffre, sinon déchiffre. $vReturn = _Crypt_EncryptData($sData, $sPassword, $CALG_RC4) Else $vReturn = BinaryToString(_Crypt_DecryptData($sData, $sPassword, $CALG_RC4)) EndIf _Crypt_Shutdown() ; Arrête la librairie Crypt. Return $vReturn EndFunc ;==>StringEncrypt
; Exemple pour traiter une chaîne non ANSI #include <Crypt.au3> #include <MsgBoxConstants.au3> #include <StringConstants.au3> Local $sPlaintext = "Hello! ជំរាបសួរ! Allô! Привет! 您好!مرحبا! હેલો! שלום! こんにちは!" Local $dPlaintextUTF8 = StringToBinary($sPlaintext, $SB_UTF8) ; Convertit en chaîne Binary en convertissant les caractères Unicode en UTF8 ;~ $dPlaintextUTF8 = $sPlaintext ; Si décommenté, montrera pourquoi la conversion UTF8 est nécessaire Local $iAlgorithm = $CALG_3DES Local $g_hKey = _Crypt_DeriveKey("CryptPassword", $iAlgorithm) Local $dEncrypted = _Crypt_EncryptData($dPlaintextUTF8, $g_hKey, $CALG_USERKEY) ; Chiffre le texte avec la nouvelle clé cryptographique. Local $dDecrypted = _Crypt_DecryptData($dEncrypted, $g_hKey, $CALG_USERKEY) ; Déchiffre les données en utilisant la chaîne de mot de passe générique. La valeur retournée est une chaîne binaire. Local $sDecrypted = BinaryToString($dDecrypted, $SB_UTF8) ; Convertit la chaîne binaire en utilisant BinaryToString pour afficher les données initiales encryptées. If $sPlaintext = $sDecrypted Then MsgBox($MB_SYSTEMMODAL, "Données déchiffrées", $sDecrypted) Else MsgBox($MB_SYSTEMMODAL, "Données déchiffrées mauvaises", $sPlaintext & @CRLF & "-->" & @CRLF & $sDecrypted) EndIf