vershlüsselugsalgorithmus schreiben

  • hey leute,

    ich habe mich in letzter zeit ein bisschen mit der _StringEncrypt-Funktion beschäftigt. Nun will ich aber wissen, wie man einen gleichwertigen, eigenen algorithmus schreiben kann. mit mir den bisher bekannten mitteln habe ich noch keinen erfolg erzielt..

    hat jemand eine ahnung davon?

    mfg cotyr

  • simpler ROT13 Algorithmus (besser bekannt als Ceasarcode)

    Spoiler anzeigen
    [autoit]

    Func _crypt($tocrypt,$mode)
    Local $splitted,$ret,$cypher,$i

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

    $cypher = 13 ; hier kannst du auch eine beliebige andere zahl einfügen
    If $mode == 0 Then
    $cypher = -$cypher
    EndIf

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

    $ret = ""
    $splitted = StringSplit($tocrypt,"",1)
    For $i=1 To $splitted[0] Step 1
    $ret = $ret & Chr(Asc($splitted[$i])+$cypher)
    Next
    Return $ret
    EndFunc

    [/autoit]

    Vigenère + XOR -Verschlüsslung:

    Spoiler anzeigen
    [autoit]

    Func crypt($word,$key)
    Local $wlen,$klen,$new,$k,$tmp

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

    $wlen = StringLen($word)
    $klen = StringLen($key)
    $k = 1
    For $i=1 To $wlen Step 1
    $tmp = BitXOR( Asc(StringMid($word,$i,1)),Asc(StringMid($key,$k,1)) )
    If $tmp == 0x00 Then
    $new &= StringMid($word,$i,1)
    Else
    $new &= Chr($tmp)
    EndIf

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

    If $k<$klen Then
    $k+=1
    Else
    $k = 1
    EndIf
    Next

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

    Return $new
    EndFunc

    [/autoit]

    Mit den komplexeren Verschlüsslungen hab ich mich im Zusammenhang mit AutoIt noch nicht auseinandergesetzt, aber ich wette jemand wird so nett sein und hier mehr dazu schreiben.

    3 Mal editiert, zuletzt von bluelamp (14. Oktober 2008 um 16:55)

  • kannst du für den ROT3-algorithmus mal den ganzen sourcecode posten?

    ich habe das eher so gemeint, dass man den 'wert' einer ziffer/buchstabens mit operatoren verändert, wie
    arccos(tan($wert)+22/23*23)) oder so etwas in der art. eben so, dass kein anderer die verschlüsselungsmethode rausbekommt, oder es zumindest schwierig ist..

    ja, wär natürlich auch gut, wenn sich jemand professionell damit auskennen würde..

    vielen dank..

    lg coty requinox

  • kannst du für den ROT13-algorithmus mal den ganzen sourcecode posten?

    Ich schätze mal du willst ein Beispiecode ?
    Hier ist einer:

    Spoiler anzeigen
    [autoit]

    $a = "Test"
    ConsoleWrite($a&@CRLF)
    $a = _crypt($a,0)
    ConsoleWrite($a&@CRLF)
    $a = _crypt($a,1)
    ConsoleWrite($a&@CRLF)

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

    Func _crypt($tocrypt,$mode)
    Local $splitted,$ret,$cypher,$i

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

    $cypher = 13 ; hier kannst du auch eine beliebige andere zahl einfügen
    If $mode == 0 Then
    $cypher = -$cypher
    EndIf

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

    $ret = ""
    $splitted = StringSplit($tocrypt,"",1)
    For $i=1 To $splitted[0] Step 1
    $ret = $ret & Chr(Asc($splitted[$i])+$cypher)
    Next
    Return $ret
    EndFunc

    [/autoit]
    • Offizieller Beitrag

    ROT13 ist ein denkbar schlechter Algorithmus. Er rotiert jeden Buchstaben lediglich um 13 Plätze (darum ROT13) in der ASCII-Tabelle. Das kann jeder innerhalb von Sekunden rückgängig machen.

    XOR mit einem langen und guten (Groß-/Kleinschreibung, Zahl, Sonderzeichen) Passwort hingegen erfordert schon sehr viel mehr Aufwand. Wenn Du das Passwort geheim hälst ist die Methode relativ sicher.

  • vielen dank :)

    jetzt bin ich der sache schon nähergekommen..obwohl mir der XOR-code unheimlich ist (zu fortgeschritten)

    hat zufällig jemand den sourcecode von _stringEncrypt? diese funktion scheint ja sehr sicher zu sein..


    mfg cotyr

  • Naja, aber ROT13 oder Vignere ist nicht sehr sicher...
    Laut dem Blabla-Gesetz muss eine Verschlüsselung auch dann noch sicher, wenn ihr Algorithmus bekannt wird.
    Das geht nur mit Einwegoperatoren wie z.B. modulo (Rest einer Ganzzahldivision).
    Das nennt sich dann asymetrische Verschlüsselung, und ist noch recht jung. Alle proffessionellen verschlüsselungsalgorithmen arbeiten damit.
    Ursprünglich heißt das RSA und war nat. geheim, später hat das jemand für privatanwender veröffentlicht (PGP), heute läuft alles mit RSA/PGP o.s.ä.
    Zum Beispiel SSH, SHTML(SSL), Emailverschlüsselung, ...
    Ich könnte Stunden darüber schreiben... ;)

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

    • Offizieller Beitrag

    naja... alles läuft damit nicht ;).
    Wenn wir ganz genau sein wollen, ist es oft AES oder (Triple-)DES mit eines zufälligen Schlüssel, der dann mit RSA verschlüsselt übertragen wird (oder nur Diffie-Hellman). Denn RSA ist mit großen Schlüsseln im Vergleich zu AES/DES äußerst langsam. Die Einwegoperation ist hier übrigens meines Wissens eigentlich die (Prim)Faktorzerlegung des Produktes zweier x-bittigen Primzahlen. Die Modulo-Operationen sind aber auch wichtig, habe jetzt gerade nicht 100% im Kopf, warum, der Beweis von RSA ist etwas tricky :D.
    Und der mit dem Gesetz war Kerckhoff ;).
    Und: RSA war nie geheim ;). Rivest, Shamir, Adleman haben das an einer Uni entwickelt, allerdings gab es einen sehr ähnlichen, asymmetrischen Ansatz einige Jahre früher beim britischen (?) Geheimdienst und das war natürlich geheim.

    Weites Feld und schwieriges Feld!
    Oft reichen kleine Fehler im konkreten Algorithmus oder in der Implementierung, um eine ansonsten taugliche Idee völlig wertlos zu machen :(.

    peethebee