verschlüsseln

hhunderter

Erfahrenes Mitglied
Tach wiedermal

ich hatte hir im forum nach meiner lösung , etwas zu verschlussen , geschaut und auch was gefunden .
1. Prob. : Dieser code unterscheidet nicht , was groß geschrieben und was klein geschrieben wurde (er setzt alles groß).

zb.

  1. Hallo
  2. LEPPS
  3. HALLO
2. Prob. : ab den zeichen "v" setzt er andere zeichen (auch 1-0 )

Code:
  Option Explicit
  Dim shift As Integer
  
  Private Sub Command1_Click()
   Dim strtext As String
   Dim strchars() As String
   Dim tempstr As String
   Dim i As Integer
   
   shift = 30
   
   If Text1.text <> "" Then
  	strtext = Text1.text
  	'Debug.Print strtext(1)
  	ReDim strchars(Len(strtext))
  	
  	For i = 1 To Len(strtext)
  		strchars(i) = UCase(Mid(strtext, i, 1))
  	Next i
  	
  	For i = 1 To UBound(strchars)
 		tempstr = tempstr & Chr((((((Asc(strchars(i)) Mod 65) + 1) + (shift Mod 26)) Mod 26) + 64))
  	Next i
  	
  	Text2.text = tempstr
  End If
  End Sub
  
  
  Private Sub Command2_Click()
   Dim strtext As String
   Dim strchars() As String
   Dim tempstr As String
   Dim i As Integer
   
   If Text2.text <> "" Then
  	strtext = Text2.text
  	ReDim strchars(Len(strtext))
  	
  	For i = 1 To Len(strtext)
  		strchars(i) = UCase(Mid(strtext, i, 1))
  	Next i
  	 
  	For i = 1 To UBound(strchars)
  		tempstr = tempstr & Chr((Asc(strchars(i)) - (shift Mod 26)))
  	Next i
  		Text3.text = tempstr
  	
  End If
   
  End Sub


plz help


mfg : hhunderter
 
Hallo hhunderter,

zu Problem 1:
Das liegt im Code an dieser Anweisung:
Code:
UCase(Mid(strtext, i, 1))
"UCase" steht dabei für Upper Case - was soviel bedeutet wie "Großbuchstaben". Entferne einfach den Code und ändere eventuelle Routinen, die nur auf großgeschriebenes zugreifen.

zu Problem 2:
da habe ich keine Ahnung. Ich denke, es liegt an diesem Abschnitt, der durch die Rechnung den ASCII-Wert für das v bekommt:
Code:
Chr((((((Asc(strchars(i))
Da wird dir wohl jemand anders helfen müssen.

Was für ein Zufall, dass ich momentan auch an einem solchen Vorhaben sitze. Ich mache mir allerdings einen Keygen(Seriennummerngenerator), der für meine Produkte Seriennummern generiert. Ich gebe die Seriennummer ein, die der Benutzer des Programms eingeben soll und als Bestätigung wird die verschlüsselte Seriennummer in eine Datei geschrieben. Klug, nicht wahr ;)
Dabei benutze ich die "Replace()"-Funktion, aber irgendwie will das nicht klappen. Vielleicht ist die Replace-Funktion besser für dich geeignet

Ich hoffe, dass ich zumindest ein bisschen helfen konnte!

Ciao:
Da' Hacker
 
Probiers mal hiermit. ;)

Public Function Verschlüseln(Text, Code)
Dim Text2 As String, LenCode As Integer, LenText As Long, Bit As Integer
LenText = 1
LenCode = 1
Do Until LenText > Len(Text)
Bit = Asc(Mid(Text, LenText, 1))
Bit = Bit + Asc(Mid(Code, LenCode, 1))
If Bit > 255 Then
Bit = Bit - 256
End If
Text2 = Text2 & Chr(Bit)
LenText = LenText + 1
LenCode = LenCode + 1
If LenCode > Len(Code) Then
LenCode = 1
End If
Loop

Verschlüseln = Text2

End Function

Public Function Entschlüseln(Text, Code)
Dim Text2 As String, LenCode As Integer, LenText As Integer, Bit As Integer
LenText = 1
LenCode = 1
Do Until LenText > Len(Text)
Bit = Asc(Mid(Text, LenText, 1))
Bit = Bit - Asc(Mid(Code, LenCode, 1))
If Bit < 0 Then
Bit = Bit + 256
End If
Text2 = Text2 & Chr(Bit)
LenText = LenText + 1
LenCode = LenCode + 1
If LenCode > Len(Code) Then
LenCode = 1
End If
Loop

Entschlüseln = Text2

End Function
 
Zurück