vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 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 - Fortgeschrittene
RC4 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
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
RC4 Dateitrennung und -verschlüsselung. Angehängte Bytes1.844Pdd02.05.08 16:41
Re: RC4 Dateitrennung und -verschlüsselung. Angehängte Bytes1.355Melkor02.05.08 16:50
Re: RC4 Dateitrennung und -verschlüsselung. Angehängte Bytes1.435Pdd02.05.08 17:09
Re: RC4 Dateitrennung und -verschlüsselung. Angehängte Bytes1.317Melkor02.05.08 17:58
Re: RC4 Dateitrennung und -verschlüsselung. Angehängte Bytes1.481Pdd03.05.08 12:35
Re: RC4 Dateitrennung und -verschlüsselung. Angehängte Bytes1.365Melkor03.05.08 13:09

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