suche schnelle Routine um einen großen String verschlüsseln

  • 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)

    2 Mal editiert, zuletzt von WhiteLion (27. März 2013 um 14:44)

  • 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 50ms

    mit 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]


    #include <Crypt.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Local Const $sUserKey = "CryptPassword" ; Declare a password string to decrypt/encrypt the data.
    Local $sData = FileRead(FileOpenDialog("" ,"" ,""))

    [/autoit] [autoit][/autoit] [autoit]

    $timer=TimerInit()
    $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.

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • 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
    ; 1024 Byte = 1 Kilobyte
    ; 1024 Kilobyte = 1 MegaByte
    For $iCount = 1 To 1024 * 1024
    $sString &= Chr(Random(32, 126, 1))
    Next

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite(@CRLF & '$sString --> ' & StringLen($sString) / 1024 / 1024 & ' MB' & @CRLF & @CRLF)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $hTime = TimerInit()
    $sString = _Crypt_EncryptData($sString, _Crypt_DeriveKey('Passwort', $CALG_RC4), $CALG_USERKEY)
    ConsoleWrite('Zeit: ' & TimerDiff($hTime) / 1000 & ' Sekunden' & @CRLF & @CRLF)
    $hTime = ''

    [/autoit] [autoit][/autoit] [autoit]

    _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")
    Global $logfile = "Debug.log"

    [/autoit][autoit][/autoit][autoit]

    _Crypt_Startup()
    Global $cpw = 'passwort'

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $Form1 = GUICreate($ToolTitle, 600, 364, 568, 419)
    $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)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    While 1
    $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

    [/autoit]

    Einmal editiert, zuletzt von WhiteLion (27. März 2013 um 08:08)

  • 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 ?

    mfg autoBert