WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 04.09.2003, 21:12   #1
Potassium
Inventar
 
Registriert seit: 06.03.2003
Alter: 37
Beiträge: 3.954

Mein Computer

Ausrufezeichen VB6.0: ROT13 verschlüsselung für zahlen und sonderzeichen.

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 dann kommt: ungültiger prozedur aufruf und folgende zeile wir markiert:

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?
Potassium ist offline   Mit Zitat antworten
Alt 05.09.2003, 08:36   #2
Seidl
Veteran
 
Registriert seit: 10.01.2001
Beiträge: 478


Standard

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.
Seidl ist offline   Mit Zitat antworten
Alt 05.09.2003, 08:43   #3
Irmi
Senior Member
 
Registriert seit: 15.09.2002
Beiträge: 141


Standard

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
Irmi ist offline   Mit Zitat antworten
Alt 05.09.2003, 13:02   #4
Potassium
Inventar
 
Registriert seit: 06.03.2003
Alter: 37
Beiträge: 3.954

Mein Computer

Standard

@ 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.
Potassium ist offline   Mit Zitat antworten
Alt 05.09.2003, 22:01   #5
Sesa_Mina
Schwarzfußfrettchen
 
Registriert seit: 28.01.2001
Beiträge: 2.071


Standard

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
Sesa_Mina ist offline   Mit Zitat antworten
Alt 05.09.2003, 22:19   #6
Potassium
Inventar
 
Registriert seit: 06.03.2003
Alter: 37
Beiträge: 3.954

Mein Computer

Standard

wie rufe ich den code jetz auf? bzw brauche ich alles für elemente?
zb buttons textboxen etc..
Potassium ist offline   Mit Zitat antworten
Alt 05.09.2003, 22:44   #7
Sesa_Mina
Schwarzfußfrettchen
 
Registriert seit: 28.01.2001
Beiträge: 2.071


Standard

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
Sesa_Mina ist offline   Mit Zitat antworten
Alt 05.09.2003, 23:07   #8
Potassium
Inventar
 
Registriert seit: 06.03.2003
Alter: 37
Beiträge: 3.954

Mein Computer

Standard

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.
Potassium ist offline   Mit Zitat antworten
Alt 05.09.2003, 23:36   #9
Sesa_Mina
Schwarzfußfrettchen
 
Registriert seit: 28.01.2001
Beiträge: 2.071


Standard

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
Sesa_Mina ist offline   Mit Zitat antworten
Alt 06.09.2003, 13:12   #10
Potassium
Inventar
 
Registriert seit: 06.03.2003
Alter: 37
Beiträge: 3.954

Mein Computer

Standard

thx is ja eh ganz simpel und logisch im nachhinein is man immer gscheiter. nun noch ein frage:
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:
Code = Code & Chr(Asc(Mid(Text, Position, 1)) Xor Asc(Mid(Schlussel, 1 + ((Position - 1) Mod Lange), 1)))
was is da falsch.
Potassium ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:37 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag