heyho
ich hab ein problem: ich suche eine schnelle routine um einen string (irgendwie) zu verschlüsseln.
Es handelt sich um ein debuglog, was ich nicht unverschlüsselt auf die platte packen will. Muss jetzt
keine mega verschlüsselung sein. Der $string ist natürlich schnell mal ein paar MB groß.
meine methoden waren bislang alle sau langsam (1MB log = 30 sekunden zum speichern oder länger)
suche schnelle Routine um einen großen String verschlüsseln
-
- [ gelöst ]
-
WhiteLion -
26. März 2013 um 18:16 -
Geschlossen -
Erledigt
-
-
ich würde
[autoit]_Crypt_DecryptData($vData, $vCryptKey, $iALG_ID [, $fFinal = True])
[/autoit]
verwenden damit Verschlüssele ich eine 2,6 MB Datei in unter 50msmit der Funktion
[autoit]_Crypt_EncryptData($vData, $vCryptKey, $iALG_ID [, $fFinal = True])
[/autoit]
kannst du dann dein verschlüsselten Text wider entschlüsseln. Natürlich nur wen du das gleiche Passwort verwendest.Hier ist noch mein versuchsscript. Eine abwandlung aus dem Beispielsscript in der Hilfe.
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <Crypt.au3>Local Const $sUserKey = "CryptPassword" ; Declare a password string to decrypt/encrypt the data.
[/autoit] [autoit][/autoit] [autoit]
Local $sData = FileRead(FileOpenDialog("" ,"" ,""))$timer=TimerInit()
[/autoit] [autoit][/autoit] [autoit][/autoit]
$bEncrypted = _Crypt_DecryptData($sData, $sUserKey, $CALG_RC4) ; Decrypt the data using the generic password string. The return value is a binary string.
MsgBox(0,@error,TimerDiff($timer))
FileWrite("Decrypted File.txt" , BinaryToString($bEncrypted)) ; Convert the binary string using BinaryToString to display the initial data we encrypted. -
Wenn dir das hier nicht schnell genug ist kann ich dir nicht helfen...
Spoiler anzeigen
[autoit]#include <Crypt.au3>
[/autoit] [autoit][/autoit] [autoit]Global $iCount, $sString, $hTime
[/autoit] [autoit][/autoit] [autoit]_Crypt_Startup()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]; 1 Zeichen = 1 Byte
[/autoit] [autoit][/autoit] [autoit]
; 1024 Byte = 1 Kilobyte
; 1024 Kilobyte = 1 MegaByte
For $iCount = 1 To 1024 * 1024
$sString &= Chr(Random(32, 126, 1))
NextConsoleWrite(@CRLF & '$sString --> ' & StringLen($sString) / 1024 / 1024 & ' MB' & @CRLF & @CRLF)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$hTime = TimerInit()
[/autoit] [autoit][/autoit] [autoit]
$sString = _Crypt_EncryptData($sString, _Crypt_DeriveKey('Passwort', $CALG_RC4), $CALG_USERKEY)
ConsoleWrite('Zeit: ' & TimerDiff($hTime) / 1000 & ' Sekunden' & @CRLF & @CRLF)
$hTime = ''_Crypt_Shutdown()
[/autoit] [autoit][/autoit] [autoit]FileWrite('Sample.txt', $sString)
[/autoit] -
danke für die antworten, ich wusste noch gar nicht, dass die verschlüsselung von autoit so schnell ist.... allerdings hab ich noch ein kleines problem.
bei mir klappt das decrypten nicht .... auch verstehe ich den letzten parameter nicht "$CALG_USERKEY" < laut referenz ist das ein bool?) der bei
"true" dafür sorgt, dass ich datenblöcke schreiben kann, oder nicht ? - warum kann ich denn nicht einfach true eintragen sondern diese konstante "$CALG_USERKEY"?Naja, jedenfalls läuft mein beispiel leider nicht:
[autoit]#include <Crypt.au3>
[/autoit][autoit][/autoit][autoit]Global $ToolTitle =("Debug Monitor")
[/autoit][autoit][/autoit][autoit]
Global $logfile = "Debug.log"_Crypt_Startup()
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
Global $cpw = 'passwort'$Form1 = GUICreate($ToolTitle, 600, 364, 568, 419)
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
$Edit1 = GUICtrlCreateEdit("", 0, 64, 599, 297, BitOR($ES_AUTOHSCROLL,$ES_WANTRETURN,$WS_VSCROLL))
$Button1 = GUICtrlCreateButton("decrypt", 8, 8, 121, 49, 0)
$Button2 = GUICtrlCreateButton("crypt", 138, 8, 121, 49, 0)
;~ $Lable1 = GUICtrlCreateLabel("Blocks grabbed:", 300, 25, 151, 20, 0)
;~ $Lable2 = GUICtrlCreateLabel("o", 500, 25, 30, 20, 0)
;~ GUICtrlSetFont($Lable1, 12, 700)
;~ GUICtrlSetFont($Lable2, 12, 700)
GUISetState(@SW_SHOW)While 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$read = FileRead(@ScriptDir&"\"&$logfile)
$read = _Crypt_DecryptData($read, _Crypt_DeriveKey($cpw, $CALG_RC4), $CALG_USERKEY)
GUICtrlSetData($Edit1,BinaryToString($read))
Case $Button2
FileDelete(@ScriptDir&"\"&$logfile)
$data = GUICtrlRead($Edit1)
Local $crypt_data = _Crypt_EncryptData($data, _Crypt_DeriveKey($cpw, $CALG_RC4), $CALG_USERKEY)
FileWrite($logfile,$crypt_data)
EndSwitch
Sleep(20)
WEnd -
auch verstehe ich den letzten parameter nicht "$CALG_USERKEY" < laut referenz ist das ein bool?) der bei
"true" dafür sorgt, dass ich datenblöcke schreiben kann, oder nicht ?Zitat_Crypt_DecryptData
--------------------------------------------------------------------------------Entschlüsselt einen String mit einen bestimmten Passwort
#Include <Crypt.au3>
_Crypt_DecryptData($vData, $vCryptKey, $iALG_ID[, $fFinal = True])Parameter
$vData String zum entschlüsseln
$vCryptKey Passwort oder Handle zu einem Schlüssel wenn das CALG_USERKEY Flag angegeben ist
$iALG_ID Der zu benutzende Algorithmus
$fFinal [optional] False wenn es nur ein Teil der gesamten Daten istmfg autoBert