2010-10-01 24 views
7

Necesito realizar un cifrado RC4 de 128 bits, estoy usando .NET y C#. ¿Hay una función incorporada para hacer esto?RC4 Encriptación de 128 bits en C#

Si no es así, me encontré con esta función que puede hacerlo:

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]; 
    } 
} 

Pero no sé si es de 128 bits o no, parece 256, pero realmente no saben la diferencia .

+0

¿Tiene que usar el algoritmo RC4? – Kamyar

+0

@Kamyar - Sí, tiene que ser un cifrado RC4 de 128 bits. – Steven

Respuesta

0

Puedo decir que no hay un algoritmo RC4 en .Net Framework. Hay una criptografía RC2 ... pero no RC4.

+0

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

2

La configuración de la clave es la primera y más difícil de este algoritmo. Durante una configuración de clave de N bits (N es la longitud de su clave), la clave de cifrado se utiliza para generar una variable de cifrado mediante dos matrices, estado y clave, y N-número de operaciones de mezcla. Estas operaciones de mezcla consisten en intercambiar bytes, operaciones de módulo y otras fórmulas.

En el proyecto adjunto puede ver cómo lo hago en la propiedad del conjunto EncryptionKey de la clase RC4Engine.

este es un artículo interesante para este tema - http://www.codeproject.com/Articles/5068/RC4-Encryption-Algorithm-C-Version

Cuestiones relacionadas