| |

VB.NET - FortgeschritteneRC4 Dateitrennung und -verschlüsselung. Angehängte Bytes | |  | Autor: Pdd | Datum: 02.05.08 16:41 |
| Hallo,
Ich bin neu hier im Forum. Ich programmiere zwar schon seit Jahren, habe aber in den letzten 2 Jahren so gut wie nichts mehr gemacht. Gestern habe ich mich dann aufgerafft und mir ein bischen VB.NET angeeignet. Wie auch immer. Ich habe versucht, ein kleines Kommandozeilentool zu schreiben, welches Dateien in kleinere Teile aufteilt und dabei mit einem Schlüssel verschlüsselt.
Mein Weg führte über AES und DES, allerdings ohne Erfolg, da Blockbasierte Verschlüsselungsverfahren mir nur Probleme bereiteten (letzter Block muss irgendwie aufgefüllt und später wieder weggenommen werden).
Nun habe ich mich an einer Implementierung von RC4 versucht, da dies eine Streamverschlüsselung ist, die somit eine Byte-für-Byte-Verschlüsselung bietet. Ich glaube, ich habe die Verschlüsselung richtig umgesetzt, denn teilweise funktioniert sie auch. Meine Klasse dafür:
Public Class RC4Crypter
Private _key As String
Public Sub New(ByVal key As String)
_key = key
End Sub
Public Function Crypt(ByVal data() As Byte) As Byte()
RC4(data, ASCII.GetBytes(_key))
Return data
End Function
Private Sub RC4(ByRef bytes() As Byte, ByRef key() As Byte)
Dim s(256) As Byte
Dim k(256) As Byte
Dim temp As Byte
Dim i, j, t, x As Integer
'S-Box füllen
For i = 0 To 255
s(i) = CByte(i)
k(i) = key(i Mod key.Length)
Next
'S-Box verändern
j = 0
For i = 0 To 255
j = (j + s(i) + k(i)) Mod 256
swap(s(i), s(j))
Next
'Verschlüsseln
i = j = 0
For x = 0 To bytes.Length - 1
i = (i + 1) Mod 256
j = (j + s(i)) Mod 256
swap(s(i), s(j))
t = (CInt(s(i)) + CInt(s(j))) Mod 256
bytes(x) = t Xor bytes(x)
Next
End Sub
Private Sub swap(ByRef a As Byte, ByRef b As Byte)
Dim temp As Byte
temp = a
a = b
b = temp
End Sub
End Class Um das ganze nun in einen Datei-Splitter zu verwandeln, erstellte ich eine zweite Klasse, welche nach der Initialisierung die Methoden Split() und Join() bereitstellt (mit Threads, damit das ganze im Hintergrund laufen kann). Diese Klasse bereitet mir aber einige Probleme. Splittet man eine Datei in mehre Parts auf, so hat jeder Part anschließend 1 Byte zuviel! Joint man diese Datei wieder, so sind immer 2 (!) Bytes zuviel zwischen den einzelnen angehängten Parts. Daher legte sich mir die Vermutung nahe, es stimmt etwas mit dem Verschlüsselungsalgo nicht. Doch dort ist die größe des Buffers vor und nach der Verschlüsselung genau gleich, es kann also nicht an ihm liegen! Scheinbar liegt es an den FileStreams, diese geben jedoch auch genau die größe des Buffers zurück, wenn ich den _fileOut.length-Parameter am Schluss abfrage. Woher kommen also diese 2 Bytes?
(Ich würde ja gerne noch die andere Klasse hier einfügen, aber maximal 5KB sind zu wenig! :O )
Wäre dankbar für jeden Tipp
mfg Pdd |  |
 | 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 |
  |
|
sevAniGif (VB/VBA) 
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
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
|
|