2010-10-01 3 views
7

Ich muss eine 128-Bit-RC4-Verschlüsselung durchführen, ich verwende .NET und C#. Gibt es dafür eine eingebaute Funktion?RC4 128-Bit-Verschlüsselung in C#

Wenn nicht, fand ich diese Funktion, die es tun können:

public void RC4(ref Byte[] bytes, Byte[] key) 
{ 
    Byte[] s = new Byte[256]; 
    Byte[] k = new Byte[256]; 
    Byte temp; 
    int i, j; 

    for (i = 0; i < 256; i++) 
    { 
     s[i] = (Byte)i; 
     k[i] = key[i % key.GetLength(0)]; 
    } 

    j = 0; 
    for (i = 0; i < 256; i++) 
    { 
     j = (j + s[i] + k[i]) % 256; 
     temp = s[i]; 
     s[i] = s[j]; 
     s[j] = temp; 
    } 

    i = j = 0; 
    for (int x = 0; x < bytes.GetLength(0); x++) 
    { 
     i = (i + 1) % 256; 
     j = (j + s[i]) % 256; 
     temp = s[i]; 
     s[i] = s[j]; 
     s[j] = temp; 
     int t = (s[i] + s[j]) % 256; 
     bytes[x] ^= s[t]; 
    } 
} 

Aber ich weiß nicht, ob es die 128-Bit ist oder nicht, sieht es 256, aber ich weiß es wirklich nicht den Unterschied .

+0

Haben Sie RC4-Algorithmus verwenden? – Kamyar

+0

@Kamyar - Ja, es muss RC4 128-Bit-Verschlüsselung sein. – Steven

Antwort

0

Ich kann Ihnen sagen, dass es im .Net Framework keinen RC4-Algorithmus gibt. Es gibt eine RC2-Krypto ... aber keine RC4.

+0

http://en.wikipedia.org/wiki/RC4 – Kamyar

2

Die Einrichtung des Schlüssels ist die erste und schwierigste Phase dieses Algorithmus. Während einer N-Bit-Schlüsselkonfiguration (wobei N die Schlüssellänge ist) wird der Verschlüsselungsschlüssel verwendet, um eine Verschlüsselungsvariable unter Verwendung von zwei Arrays, Status und Schlüssel und N-Anzahl von Mischoperationen zu erzeugen. Diese Mischoperationen bestehen aus dem Austauschen von Bytes, Modulo-Operationen und anderen Formeln.

Im angehängten Projekt können Sie sehen, wie ich es in der EncryptionKey-Set-Eigenschaft der RC4Engine-Klasse tun.

dies ist ein interessanter Artikel zu diesem Thema - http://www.codeproject.com/Articles/5068/RC4-Encryption-Algorithm-C-Version

Verwandte Themen