![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Inventar
![]() |
![]() hi leute
ich hab heute mal den ROT 13 algorithmus probiert ![]() nun funzt es wunderbar mit buschstaben aber wenn ich zahlen eisetze dann nciht mehr. ist mir aj auch kalr warum weil es ja nur case "a" to "m" und case "n" to "z" heißt. aber von zahlen is halt nirgends die rede in meinem code. also hab ich einfach eine zweiten geschrieben für zahlen: '--------------------------------------------------------- Public Function potassium(ByRef Text As String) As String Dim l As Long potassium = Text For l = 1 To Len(Text) Select Case UCase$(Mid$(Text, l, 1)) Case "0" To "9" Mid$(potassium, l) = Chr$(Asc(Mid$(Text, l, 1)) * 5) End Select Next l End Function '------------------------------------------------------------ und im formobjekt steht nun: '------------------------------------------------------------ If txt.Text = "" Then MsgBox "bitte geben schreiben sie den Text, den Sie verschlüssen wollen in die Textbox" GoTo 2 ElseIf IsNumeric(txt.Text) Then GoTo 3 Else: GoTo 1 End If 1 txt.Text = Rot13(txt.Text) DateiNr = FreeFile Open "crypt.txt" For Append As DateiNr Print #DateiNr, txt.Text Close GoTo 2 3 txt.Text = potassium(txt.Text) DateiNr = FreeFile Open "crypt.txt" For Append As DateiNr Print #DateiNr, txt.Text Close 2 txtausgabe.Text = txt.Text If txt.Text <> "" Then Label1.Caption = "Ihre Eingabe lautet verschlüsselt:" End If txt.Text = "" End Sub '--------------------------------------------------------------- das funktioniert ganz gut aber nur bis zur zahl 13 ![]() Mid$(potassium, l) = Chr$(Asc(Mid$(Text, l, 1)) * 5) '-------------------------------------------------------------------- Nun mein Frage was is da falsch? Und wie kann ich das lösen? Und geht das für sonderzeichen auch? |
![]() |
![]() |
![]() |
#2 |
Veteran
![]() Registriert seit: 10.01.2001
Beiträge: 478
|
![]() Du verletzt den Wertebereich der Funktion Chr(). Grössere Werte als 255 hat sie gar nicht gern
![]() Die Sache sollte sich über Modulo lösen lassen. (5 mod 3 = 2) Sonderzeichen werden wohl in jedem Fall Probleme machen. Am besten nur druckbare Zeichen verwenden. |
![]() |
![]() |
![]() |
#3 |
Senior Member
![]() Registriert seit: 15.09.2002
Beiträge: 141
|
![]() Hallo,
Ein paar Gegenfragen ![]() 1) Warum erweiterst Du Dein Alphabet nicht einfach um die Ziffern 0 bis 9? Dann musst Du nicht extra unterscheiden zwischen Ziffer und Buchstabe. 2) Warum gehst Du bis 13? Das sind ja bereits 2 Ziffern, nämlich 1 und 3. 3) Allgemein: Warum verwendest Du nicht einen etwas sicheren Algorhythmus, wo sowieso alle Zeichen verschlüsselt werden, egal ob Sonderzeichen, Ziffern, o.ä.? ROT rotiert die Zeichen eines Alphabetes nur. Dies zu entschlüsseln ist ein Kinderspiel. Verwende RSA oder DES - sind beides sehr einfache Algorhythmen aber effektiv, im WWW findest Du jede Menge Anleitungen darüber (Google mal danach) Bei Deinem ungültigen Prozeduraufruf wirst Du durch die Multiplikation mit 5 höchstwahrscheinlich einen Overflow erzeugen. (Als würdest Du ein chr mit 1000 machen) Viel Spaß weiterhin beim Kryptographieren ![]()
____________________________________
Liebe Grüße, Christian |
![]() |
![]() |
![]() |
#4 |
Inventar
![]() |
![]() @ irmi:
ich hab da noch einige fragen: 1.)wie mach ich das mit den zaheln ins alpahbet interieren? 2.)deine 2. antowrt verstehe ich nicht ganz meinst du +13 bzw -13 bei codieren oder meistn du bei der verschlüsselung wa ich gschreiebn hab das es bis dorhtin geh tich hab auch noch ausprobiert 123 funzt auch ![]() 3.)ich hab nichts zu den themen geunden zumindest nichts was mit VB zu tun und keine forum einträge waren. ![]() |
![]() |
![]() |
![]() |
#5 |
Schwarzfußfrettchen
![]() Registriert seit: 28.01.2001
Beiträge: 2.071
|
![]() Schau dir mal das beigefügte textfile an
![]()
____________________________________
Wann die kan Almdudler ham... \"Es gibt nur einen Weg zur Lunge, und der muss geteert werden, damit der Krebs nicht stolpert!\" http://www.dream.at/gizmo/bunny.gif Image is © 2001 Merle Sterndalsäg.. ähh... jäger ![]() |
![]() |
![]() |
![]() |
#6 |
Inventar
![]() |
![]() wie rufe ich den code jetz auf? bzw brauche ich alles für elemente?
zb buttons textboxen etc.. |
![]() |
![]() |
![]() |
#7 |
Schwarzfußfrettchen
![]() Registriert seit: 28.01.2001
Beiträge: 2.071
|
![]() Aufruf:
Dim codiert as String, decodiert as String codiert = EncodeStr64(XORCrypt(textbox.text)) decodiert = XORCrypt(DecodeStr64(codiert)) Statt textbox.text kannst du auch eine beliebige Variable vom Typ String, welche beliebigen Text enthalten kann, verwenden. Hierbei wird der Text zuerst mit einem Schlüssel codiert und danach noch base64 drübergejagt um nur Buchstaben von A-Z zu bekommen oder so. Funktioniert ganz gut und in Verbindung mit dem Schlüssel wird das ganze auch recht sicher. Beim Decodieren wird das ganze umgekehrt gemacht wobei natürlich der selbe Schlüssel verwendet werden muss.
____________________________________
Wann die kan Almdudler ham... \"Es gibt nur einen Weg zur Lunge, und der muss geteert werden, damit der Krebs nicht stolpert!\" http://www.dream.at/gizmo/bunny.gif Image is © 2001 Merle Sterndalsäg.. ähh... jäger ![]() |
![]() |
![]() |
![]() |
#8 |
Inventar
![]() |
![]() irgendwie steh ich auf der leitung:
ich hab jetzt eine textbox mit dem namen TextBox erstellt und zwei buttons: einer mit codiert (der befehl ned als namen) und der andere mit dem decodiert (s.o.) aber er speichert nix, er öffnet nix, er tut gar nix wo is der haken? aja den restlichen code hab ich in ein modul getan. stimmt das soweit? berichtigt mich plz. ![]() ![]() |
![]() |
![]() |
![]() |
#9 |
Schwarzfußfrettchen
![]() Registriert seit: 28.01.2001
Beiträge: 2.071
|
![]() In deinem Fall mit den 2 buttons würde ich das so machen:
Code:
Private Sub btnCodieren_Click() Textbox.text = EncodeStr64(XORCrypt(textbox.text)) End Sub Private Sub btnDEcodieren_Click() Textbox.text = XORCrypt(DecodeStr64(Textbox.text)) End Sub Somit wird der Text codiert bzw. decodiert. Zweimaliges Anklicken des Selben buttons wird höchstwahrscheinlich eine Fehlermeldung hervorrufen. Aber du kannst es ausprobieren. "codiere" den Text einfach mal mehrfach hintereinander. Du wirst ihn dann genauso oft "decodieren" müssen um wieder den Originaltext zu erhalten.
____________________________________
Wann die kan Almdudler ham... \"Es gibt nur einen Weg zur Lunge, und der muss geteert werden, damit der Krebs nicht stolpert!\" http://www.dream.at/gizmo/bunny.gif Image is © 2001 Merle Sterndalsäg.. ähh... jäger ![]() |
![]() |
![]() |
![]() |
#10 | |
Inventar
![]() |
![]() thx is ja eh ganz simpel und logisch
![]() standardmäßig ist so ein satz als schlüssel vorgegeben. ich hab das jetz geändert auf Schlussel = s und in dem formcode s = inputbox ("blabllabla") nur wenn ich jetzt kodeiren will dann schreibt er division durch null. und zeigt folgende zeile an: Zitat:
|
|
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|