vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Verschlüsselungsverfahren (Einweg) ohne Verwendung bestehender Klasse 
Autor: keco
Datum: 30.11.07 15:31

Hey,

ich wollte mir einen Algorithmus zusammenbasteln, den man vielleicht dazu verwenden könnte um Serial-Nummern zu erstellen, zumindest so nach diesem Prinzip.

Bisher habe ich folgenden Code erstellt:
	Function CreateCode(ByVal sCode As String) As String
		' Variablendeklaration
		Dim arr As List(Of String) = CreateList()
		Dim strGesamt As String = 0
		Dim strChar As String = 0
		Dim strReturn As String = ""
 
		' Durchlaufe jedes einzelne Zeichen
		For i As Integer = 0 To Len(sCode) - 1
			' Bestimme Ascii-Code des gewählten Zeichens, addiere Quersumme des bisher
			' codierten Strings hinzu
			strChar = Asc(sCode.Chars(i))-48 + QuerSumme(strGesamt)
			strGesamt += strChar
 
			' Wenn Index größer als Array, fange wieder von vorne an mit durchlaufen
			Do Until CInt(strChar) < 36
				strChar = CInt(strChar)-36
			Loop
			strReturn += arr.Item(strChar)
		Next
 
		' Codierten String zurückgeben
		Return strReturn
	End Function
 
	Function QuerSumme(ByVal Value As String) As Integer
		' Nur berechnen, wenn String nur Ziffern enthält
		If IsNumeric(Value) Then
			Dim Summe As Integer = 0
 
			' Durchlaufe jede Ziffer und addiere hinzu
			For i As Integer = 0 To Value.Length - 1
				Summe = Summe + Value.Substring(i,1)
			Next
 
			' Berechnete Quersumme zurückgeben
			Return Summe
		Else
			Return 0
		End If
	End Function
 
	Function CreateList() As List(Of String)
		' Variablendeklaration
		Dim Liste As New List(Of String)
 
		' Füge alle Ziffern hinzu
		For i As Integer = 48 To 57
			Liste.Add(Chr(i))
		Next
		' Füge alle Großbuchstaben hinzu (A-Z)
		For i As Integer = 65 To 90
			Liste.Add(Chr(i))
		Next
 
		' Liste zurückgeben
		Return Liste
	End Function
Mit dem Code kann ich das prima codieren, mit bisher einen auffälligem Nachteil.

Beispiele:
AAAA codiert zu HPW1
AAAB codiert zu HPW2 <- das gefällt mir nicht
BAAA codiert zu IQY5 <- das wiederrum gefällt mir

Genau aus dem Grund, dass, wenn ich das letzte Zeichen um beispielsweise einen Wert erhöhe, auch im codierten String der letzte Wert nur um 1 erhöht wird (bezüglich des Index im Array, welches dabei angesprochen wird).

Daher hätte ich gerne eine Alternative um einen String zu codieren. Dabei möchte ich aber nicht auf die Klasse zurückgreifen! Habt ihr vielleicht einige Ideen, wie man so etwas relativ clever lösen könnte? Oder ist mein Verfahren schon "gut genug", sobald ich die Zeichen im Array nicht logisch anordne, sondern durcheinander?

MfG
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Verschlüsselungsverfahren (Einweg) ohne Verwendung bestehend...929keco30.11.07 15:31
Re: Verschlüsselungsverfahren (Einweg) ohne Verwendung beste...550Moderatorralf_oop30.11.07 15:36
Re: Verschlüsselungsverfahren (Einweg) ohne Verwendung beste...553keco30.11.07 15:39
Re: Verschlüsselungsverfahren (Einweg) ohne Verwendung beste...520Moderatorralf_oop30.11.07 16:06
Re: Verschlüsselungsverfahren (Einweg) ohne Verwendung beste...602keco30.11.07 16:10
Re: Verschlüsselungsverfahren (Einweg) ohne Verwendung beste...558Moderatorralf_oop30.11.07 22:14
Re: Verschlüsselungsverfahren (Einweg) ohne Verwendung beste...617keco01.12.07 10:59

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel