Datei und Pw verschlüsselung mit RSA

    • Offizieller Beitrag

    Hi!

    Cool, dass du meine DLL verwendet hast :)

    Ein paar Anmerkungen:
    - Der Speicherort für die Keys ist zu starr festgelegt, unter Vista kann ich nur den "öffentlichen Desktop" auswählen. Das sollte frei wählbar sein.
    - Man braucht immer nur einen Key, d.h. es braucht auch keine zwei Auswahlfelder für die beiden verschiedenen Keys.
    - Quelltext dazu wäre ganz nett :)

    Weiter so,
    peethebee

  • Ich weiß das man nur Publicfile fürs verschlüsseln und private fürs entschlüsseln.

    Wie der speicherort is zu star unter xp kann ich alle ordner haben die ich will.

    Hier der Quellcode

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    PluginOpen("rsa.dll")
    #compiler_plugin_funcs = RSA_GenerateKeys, RSA_Encrypt, RSA_Decrypt

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

    Opt("GUIOnEventMode", 1)
    #Region ### START Koda GUI section ###
    $Form1_1 = GUICreate("RSA Verschüsselung", 347, 275, 193, 115)
    GUISetOnEvent($GUI_EVENT_CLOSE, "AForm1_1Close")
    $tab=GUICtrlCreateTab (10,10, 325,260)
    $tab0=GUICtrlCreateTabitem ("File")
    $vschluessel = GUICtrlCreateButton("Verschüsseln", 40, 230, 115, 25, 0)
    GUICtrlSetOnEvent(-1, "vschluesselClick")
    $nschluessel = GUICtrlCreateButton("Entschüsseln", 180, 230, 115, 25, 0)
    GUICtrlSetOnEvent(-1, "nschluesselClick")
    $Public = GUICtrlCreateLabel("PublicKey File", 20, 124, 70, 17)
    $Priv = GUICtrlCreateLabel("PrivateKey File", 20, 152, 74, 17)
    $PrivFile = GUICtrlCreateInput("", 104, 152, 117, 21)
    $Pubfile = GUICtrlCreateInput("", 104, 120, 117, 21)
    $BrowsePub = GUICtrlCreateButton("Browse", 236, 120, 89, 25, 0)
    GUICtrlSetOnEvent(-1, "BrowsePubClick")
    $BrowsePrv = GUICtrlCreateButton("Browse", 236, 152, 89, 25, 0)
    GUICtrlSetOnEvent(-1, "BrowsePrvClick")
    $BrowseDat = GUICtrlCreateButton("Browse", 236, 52, 89, 25, 0)
    GUICtrlSetOnEvent(-1, "BrowseDatClick")
    $Label1 = GUICtrlCreateLabel("Datei die Verschüsselt werden soll:", 28, 37, 168, 17)
    $Datei = GUICtrlCreateInput("", 28, 56, 197, 21)
    $privfilegen = GUICtrlCreateButton("Key Files Generieren", 100, 190, 125, 25, 0)
    GUICtrlSetOnEvent(-1, "privfilegenClick")

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

    $tab1=GUICtrlCreateTabitem ( "Password")

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

    $vschluesselp = GUICtrlCreateButton("Verschüsseln", 40, 230, 115, 25, 0)
    GUICtrlSetOnEvent(-1, "vschluesselpClick")
    $nschluesselp = GUICtrlCreateButton("Entschüsseln", 180, 230, 115, 25, 0)
    GUICtrlSetOnEvent(-1, "nschluesselpClick")
    $Publicp = GUICtrlCreateLabel("PublicKey File", 20, 124, 70, 17)
    $Privp = GUICtrlCreateLabel("PrivateKey File", 20, 152, 74, 17)
    $PrivFilep = GUICtrlCreateInput("", 104, 152, 117, 21)
    $Pubfilep = GUICtrlCreateInput("", 104, 120, 117, 21)
    $BrowsePubp = GUICtrlCreateButton("Browse", 236, 120, 89, 25, 0)
    GUICtrlSetOnEvent(-1, "BrowsePubpClick")
    $BrowsePrvp = GUICtrlCreateButton("Browse", 236, 152, 89, 25, 0)
    GUICtrlSetOnEvent(-1, "BrowsePrvpClick")
    $privfilegenp = GUICtrlCreateButton("Key Files Generieren", 100, 190, 125, 25, 0)
    GUICtrlSetOnEvent(-1, "privfilegenClick")
    $Label1p = GUICtrlCreateLabel("Password Unverschlüsselt", 60, 37, 200, 17)
    $Dateip = GUICtrlCreateInput("", 60, 56, 197, 21)
    $Label2p = GUICtrlCreateLabel("Password Verschüsselt:", 60, 78, 200, 17)
    $pwp = GUICtrlCreateInput("", 60, 93, 197, 21)
    $clipputp = GUICtrlCreateButton("Kopieren", 265, 93, 60, 21)
    GUICtrlSetOnEvent(-1, "clipputpClick")

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    $var = IniRead(@WorkingDir&"\file.ini", "privkey", "key", "")
    GUICtrlSetData($PrivFile,$var)
    $var = IniRead(@WorkingDir&"\file.ini", "pubkey", "key", "")
    GUICtrlSetData($Pubfile,$var)
    $var = IniRead(@WorkingDir&"\file.ini", "privkeyp", "key", "")
    GUICtrlSetData($PrivFilep,$var)
    $var = IniRead(@WorkingDir&"\file.ini", "pubkeyp", "key", "")
    GUICtrlSetData($Pubfilep,$var)

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

    While 1
    $msg = GUIGetMsg()

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

    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    if $msg = $tab then
    ; display the clicked tab
    if GUICtrlread ($tab) = 0 then WinSetTitle("My GUI Tab","","My GUI Tab0")
    if GUICtrlread ($tab) = 1 then WinSetTitle("My GUI Tab","","My GUI Tab1")
    EndIf
    Wend

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

    Func AForm1_1Close()
    $readpriv = GUICtrlRead($PrivFile)
    $readpub = GUICtrlRead($Pubfile)
    $readprivp = GUICtrlRead($PrivFilep)
    $readpubp = GUICtrlRead($Pubfilep)

    IniDelete(@ScriptDir&"\file.ini", "privkeyp")
    IniDelete(@ScriptDir&"\file.ini", "pubkeyp")
    IniDelete(@ScriptDir&"\file.ini", "privkey")
    IniDelete(@ScriptDir&"\file.ini", "pubkey")

    if $readpriv <> "" Then
    IniWrite(@ScriptDir&"\file.ini", "privkey", "key", $readpriv)
    EndIf
    if $readpub <> "" Then
    IniWrite(@ScriptDir&"\file.ini", "pubkey", "key", $readpub)
    endif

    if $readprivp <> "" Then
    IniWrite(@ScriptDir&"\file.ini", "privkeyp", "key", $readprivp)
    EndIf
    if $readpubp <> "" Then
    IniWrite(@ScriptDir&"\file.ini", "pubkeyp", "key", $readpubp)
    endif
    $var = MsgBox(4,"Aufhören???","Wollen Sie das Programm wirklich beenden?")
    if $var = 6 then exit
    EndFunc

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

    Func BrowseDatClick()
    $readdatei = GUICtrlRead($Datei)
    $var = FileOpenDialog("Datei",$readdatei,"Textdateien (*.txt)",1)
    GUICtrlSetData($Datei,$var)
    EndFunc

    Func BrowsePrvClick()
    $readpriv = GUICtrlRead($PrivFile)
    $var = FileOpenDialog("Datei",$readpriv,"Private (*.privkey)",1)
    GUICtrlSetData($PrivFile,$var)
    EndFunc

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

    Func BrowsePubClick()
    $readpub = GUICtrlRead($Pubfile)
    $var = FileOpenDialog("Datei",$readpub,"Public (*.pubkey)",1)
    GUICtrlSetData($Pubfile,$var)
    EndFunc

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

    Func nschluesselClick()

    $readpriv = GUICtrlRead($PrivFile)
    $read = GUICtrlRead($Datei)
    if $readpriv = "" or $read = "" Then
    MsgBox(0,"ERROR","Bitte Wählen sie erst die Key Files aus")
    Else
    FileMove($read, "c:\tmp\test.txt")
    FileChangeDir("C:\tmp")
    $file = fileopen("test.txt",0)
    If $file = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
    EndIf

    $line = FileRead($file)
    FileClose($file)
    $line = RSA_Decrypt($line,$readpriv)
    $file = FileOpen("test.txt",2)
    FileWrite($file,$line)
    FileClose($file)
    FileMove("C:\tmp\test.txt",$read)
    MsgBox(0,"","erfolgreich")
    EndIf
    EndFunc

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

    Func vschluesselClick()
    $readpub = GUICtrlRead($Pubfile)
    $read = GUICtrlRead($Datei)

    if $readpub = "" or $read = "" Then
    MsgBox(0,"ERROR","Bitte Wählen sie erst die Key Files aus")
    Else
    FileMove($read, "C:\tmp\test.txt")
    FileChangeDir("C:\tmp")
    $file = fileopen("test.txt",0)
    If $file = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
    EndIf

    $line = FileRead($file)
    FileClose($file)
    $line = RSA_Encrypt($line,$readpub)
    $file = FileOpen("test.txt",2)
    FileWrite($file,$line)
    FileClose($file)
    FileMove("C:\tmp\test.txt",$read)
    MsgBox(0,"Erfolgreich","Erfolgreich verschüsselt")
    EndIf
    EndFunc

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

    Func privfilegenClick()
    $folder = FileSelectFolder("Speicherort für Keyfiles", @DesktopCommonDir,1)
    $folder = $folder & "\"
    $bitlen = InputBox("Bitlänge", "Key Bitlänge", "50")
    $name = InputBox("Speichername", "Speichername der Keyfiles")
    if $folder <> "" and $name <> "" and $bitlen <> "" Then
    RSA_GenerateKeys ($bitlen, $folder, $name)
    MsgBox(0,"Erfolgreich","Keys wurden erfolgreich erstellt")
    Else
    MsgBox(0,"Error","Bitte alle Angaben machen")
    EndIf
    EndFunc

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

    Func BrowsePrvpClick()
    $readpriv = GUICtrlRead($PrivFilep)
    $var = FileOpenDialog("Datei",$readpriv,"Private (*.privkey)",1)
    GUICtrlSetData($PrivFilep,$var)
    EndFunc

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

    Func BrowsePubpClick()
    $readpub = GUICtrlRead($Pubfilep)
    $var = FileOpenDialog("Datei",$readpub,"Public (*.pubkey)",1)
    GUICtrlSetData($Pubfilep,$var)
    EndFunc

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

    Func nschluesselpClick()
    $readpriv = GUICtrlRead($PrivFilep)
    $read = GUICtrlRead($pwp)
    if $readpriv = "" or $read = "" Then
    MsgBox(0,"ERROR","Bitte Wählen sie erst die Key Files aus")
    Else
    $pw = RSA_Decrypt($read,$readpriv)
    GUICtrlSetData($Dateip,$pw)
    EndIf
    EndFunc

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

    Func vschluesselpClick()
    $readpub = GUICtrlRead($Pubfilep)
    $read = GUICtrlRead($Dateip)

    if $readpub = "" or $read = "" Then
    MsgBox(0,"ERROR","Bitte Wählen sie erst die Key Files aus")
    Else
    $pw = RSA_Encrypt($read,$readpub)
    GUICtrlSetData($pwp,$pw)
    EndIf
    EndFunc

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

    Func clipputpClick()
    ClipPut(GUICtrlRead($pwp))
    EndFunc

    [/autoit]

    würd gern noch einbauen das eine Fehlermeldung kommt wenn man die falschen Files zum entschlüsseln nimmt wird aber schwer wenn man nich weiß was die dll dann zurück gibt.

    Einmal editiert, zuletzt von Neonium (28. März 2007 um 15:32)

    • Offizieller Beitrag

    Hi!

    Danke für den Quelltext :)

    Schnell mal @ Ordner: Bei mir geht es wie folgt.
    $folder = FileSelectFolder("Speicherort für Keyfiles", Default,1)

    Was die DLL zurückgibt, habe ich nicht im Kopf, aber das sollte sich testen lassen, oder?

    Keys generieren funktioniert, Passwort verschlüsseln auch - Datei ging bei mir nicht (evtl. Vista-Problem).

    peethebee

  • Hab nochmal neu hochlgeladen mit source code, dll und exe mit dem ordner fix. Das Datei verschlüsseln kann sehr lange dauern. kommt auf file inhalt und bitlänge an.

  • Hallo. Wie bekomme ich die Keys, die man da braucht. Ist das PGP-Key?

    Liebe Grüße, Lina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    • Offizieller Beitrag

    Hallo Alina!

    Die Keys kann man sich selbst erstellen. Das Prinzip von RSA ist ganz anders als andere Verschlüsselungen und deshalb auch bei richtiger Anwendung sicherer.
    Es geht um ein Asymmetrisches Verschlüsselungsverfahren, vielleicht bringt dich der Wikipedia-Artikel ein bisschen weiter :)

    peethebee

  • Hallo Peethebee.

    Ich habe nur das Problem, wenn ich auf [KEYS] hehe und ein File generieren möchte, sagt das Programm, das ich ein Namen eingeben soll, aber das Feld kann ich nicht anklicken. mmmmhhhhh, wo mache ich den Fehler????

    Und noch eine Sache, wo ich nicht weiß wo ich die Frage stellen soll.
    Ist mal ein AutoIT Treffen geplant? Würde gerne mal die Leute real sehen. ;)

    Liebe Grüße, Lina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Hallo Neonium.

    Wie bereits mitgeteilt, wurde der Fehler gefunden. Es lag daran, das ich den Pfad, den Du im Script vor gibst nicht eingehalten habe. Bin aber erst darauf gekommen, als ich mich intensiver mit dem Script befaßt habe.
    Einziges was nicht geht, ist mein hinteren Reiter, das man das erste "Imput" nur auswählen kann (ich zumindest), wenn ich auf das mittlere gehe und dann mit der gedrückten Shift-Tastedie Tab-Taste einmal drücke. Tab sozusagen einmal rückwärts "setze". weiß es nicht anders auszudrücken.

    LG Lina

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl