Verschlüsseln

  • Ich hab den Thread zum verschlüsseln gefunden und hab mir gedacht daas ich auch mal mein Glück versuche. Jedoch ohne am Wettbewerb teilzunehmen.

    Hier mein Versuch
    [autoit]

    $sString = "Dies ist ein Test."
    $sPassword = "Test Passwort"

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

    $crypt = _crypt_myown($sString, $sPassword)
    $decrypt = _decrypt_myown($crypt, $sPassword)
    ConsoleWrite("Crypt:"&$crypt&@CRLF)
    ConsoleWrite("DeCrypt:"&$decrypt&@CRLF)

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

    Func _crypt_myown($sString, $sPassword)
    $aPassword = StringSplit($sPassword, "")
    For $i = 1 To $aPassword[0]
    $aPassword[$i] = Asc($aPassword[$i])
    Next

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

    $aString = StringSplit($sString, "")
    For $i = 1 To $aString[0]
    $aString[$i] = Asc($aString[$i])
    Next
    $sCrypt_String = ""
    $o = 1
    For $i = 1 To $aString[0]

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

    $iAsc = $aString[$i] + $aPassword[$o]
    If $iAsc > 255 Then $iAsc -= 255
    $sCrypt_String &= Chr($iAsc)
    $o += 1
    If $o > $aPassword[0] Then $o = 1
    Next
    Return $sCrypt_String
    EndFunc ;==>_crypt_myown

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

    Func _decrypt_myown($sString, $sPassword)
    $aPassword = StringSplit($sPassword, "")
    For $i = 1 To $aPassword[0]
    $aPassword[$i] = Asc($aPassword[$i])
    Next

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

    $aString = StringSplit($sString, "")
    For $i = 1 To $aString[0]
    $aString[$i] = Asc($aString[$i])
    Next

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

    $sDeCrypt_String = ""
    $o = 1
    For $i = 1 To $aString[0]
    $iAsc = $aString[$i] - $aPassword[$o]
    If $iAsc < 0 Then $iAsc += 255
    $sDeCrypt_String &= Chr($iAsc)
    $o += 1
    If $o = $aPassword[0] Then $o = 1
    Next

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

    Return $sDeCrypt_String
    EndFunc ;==>_decrypt_myown

    [/autoit]

    Jedoch Ver- Entschlüsselt er das nich richtig :(
    Vielleicht hat von euch ja einer ne Idee wie man das Problem beheben kann :)

    Mfg
    monkey

    Monkey - die finale Potenz von göttlich!
    Sloganizer

    Einmal editiert, zuletzt von monkey (4. August 2010 um 21:58)

  • willst du beim µItLight mitmachen? Dann solltest du deinen Code besser geheim halten und die Lösung selbst suchen ;)
    PS: Diese Funktionen sind recht nützlich:

    [autoit]

    StringToASCIIArray
    StringFromASCIIArray

    [/autoit]
  • Wenn ich aber zu, Beispiel den Buchstaben "z" im Passwort habe mit dem wert "122"
    Und im Text habe ich den Buchstben "©" mit dem Wert "169"

    dann sollen die beiden Werte zusammen gerechnet werden, da das aber mehr als 255 sind (291) Muss man um überheupt einen Buchstaben zu bekommen wieder in den Bereich von 0-255 kommen
    Also wird -255 gerechnet. (36)


    Und da der Buchstabe ja wieder mit dem selben Buchstaben aus dem Passwort entschlüsselt wird muss man dann wieder 36 - 169 rechnen. (133)
    Weil die Zahl aber wieder Negativ ist und wieder nicht im Bereich von 0-255 liegt soll dann wieder +255 gerechnet werden.(122)

    Damit wären wir wieder bei 122 ("z")

    Mfg
    monkey

    Monkey - die finale Potenz von göttlich!
    Sloganizer

  • Und wenn Du im Passwort den Buchstaben "n" hast (Asc = 110) und im Text den Buchstaben "µ" (Asc = 181) bekommst Du ebenfalls 291 raus. Wie hälst Du die auseinander?
    Wie Du siehst, funktioniert Deine "Verschlüsselung" so nicht.


    Funktioniert doch ... das Passwort hat an dieser Stelle doch nur einen Buchstaben und nicht zwei alternative.
    Das Problem liegt daran, dass $o in beiden Funktionen unterschiedlich gezählt wird.

  • Oh man danke Progandy :)

    was so ein kleines "=" doch ausmacht :rofl:

    Problem gelöst.
    [autoit]

    #include<array.au3>
    $sString = "Dies ist ein Test."
    $sPassword = "Test Passwort"

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

    $crypt = _crypt_myown($sString, $sPassword)

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

    $decrypt = _decrypt_myown($crypt, $sPassword)
    ConsoleWrite("Crypt:"&$crypt&@CRLF)
    ConsoleWrite("DeCrypt:"&$decrypt&@CRLF)

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

    Func _crypt_myown($sString, $sPassword)
    $aPassword = StringSplit($sPassword, "")
    For $i = 1 To $aPassword[0]
    $aPassword[$i] = Asc($aPassword[$i])
    Next

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

    $aString = StringSplit($sString, "")
    For $i = 1 To $aString[0]
    $aString[$i] = Asc($aString[$i])
    Next
    $sCrypt_String = ""
    $o = 1
    For $i = 1 To $aString[0]

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

    $iAsc = $aString[$i] + $aPassword[$o]
    If $iAsc > 255 Then $iAsc -= 255
    $sCrypt_String &= Chr($iAsc)
    $o += 1
    If $o > $aPassword[0] Then $o = 1
    Next
    Return $sCrypt_String
    EndFunc ;==>_crypt_myown

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

    Func _decrypt_myown($sString, $sPassword)
    $aPassword = StringSplit($sPassword, "")
    For $i = 1 To $aPassword[0]
    $aPassword[$i] = Asc($aPassword[$i])
    Next

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

    $aString = StringSplit($sString, "")
    For $i = 1 To $aString[0]
    $aString[$i] = Asc($aString[$i])
    Next

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

    $sDeCrypt_String = ""
    $o = 1
    For $i = 1 To $aString[0]
    $iAsc = $aString[$i] - $aPassword[$o]
    If $iAsc < 0 Then $iAsc += 255
    $sDeCrypt_String &= Chr($iAsc)
    $o += 1
    If $o > $aPassword[0] Then $o = 1
    Next

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

    Return $sDeCrypt_String
    EndFunc ;==>_decrypt_myown

    [/autoit]

    Mfg
    monkey

    Monkey - die finale Potenz von göttlich!
    Sloganizer

  • Oscar : Wo liegt dein Verständnisproblem? ROT13 funktioniert doch auf die selbe Art, nur hier wird die Rotationszahl eben bei jedem Buchstaben durch das Passwort anders gegeben und nicht fest. Wenn der verschlüsselte String ohne das Passwort eindeutig wäre, dann wäre die Verschlüsselung ja unwirksam ;)
    Zeig mir doch ein Beispiel, wo zwei verschiedene Buchstaben im Originaltext mit dem gleichen Schlüsselbuchstaben in die gleiche Zahl verschlüsselt werden.

  • Ok, Du hast recht (gerade getestet). Hatte da gerade einen Denkfehler.
    Aber der Lösungsweg von monkey ist umständlich (geht viel kürzer). ;)


    Ja. 2 Funktionen, je eine für Verschlüsseln und eine für Entschlüsseln, insgesamt 17 Zeilen.