WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   VB6.0: ROT13 verschlüsselung für zahlen und sonderzeichen. (http://www.wcm.at/forum/showthread.php?t=107814)

Potassium 04.09.2003 21:12

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 :confused: 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?

Seidl 05.09.2003 08:36

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.

Irmi 05.09.2003 08:43

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 :)

Potassium 05.09.2003 13:02

@ 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 :confused:
3.)ich hab nichts zu den themen geunden zumindest nichts was mit VB zu tun und keine forum einträge waren. :D

Sesa_Mina 05.09.2003 22:01

Schau dir mal das beigefügte textfile an :)

Potassium 05.09.2003 22:19

wie rufe ich den code jetz auf? bzw brauche ich alles für elemente?
zb buttons textboxen etc..

Sesa_Mina 05.09.2003 22:44

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.

Potassium 05.09.2003 23:07

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. :confused: :verwirrt:

Sesa_Mina 05.09.2003 23:36

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.

Potassium 06.09.2003 13:12

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.


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:27 Uhr.

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