2010-10-01 6 views
7

Je dois effectuer un cryptage RC4 de 128 bits, j'utilise .NET et C#. Y at-il une fonction intégrée pour le faire.Codage RC4 128 bits en C#

Sinon, je trouve cette fonction qui peut le faire:

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

Mais je ne sais pas si c'est de 128 bits ou non, il semble 256, mais je ne sais vraiment pas la différence .

+0

Avez-vous d'utiliser l'algorithme RC4? – Kamyar

+0

@Kamyar - Oui, il doit s'agir d'un cryptage RC4 128 bits. – Steven

Répondre

0

Je peux vous dire qu'il n'y a pas d'algorithme RC4 dans le .Net Framework. Il y a une crypto RC2 ... mais pas de RC4.

+0

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

2

La configuration de la clé est la première et la plus difficile phase de cet algorithme. Pendant une configuration de clé N bits (N étant la longueur de votre clé), la clé de cryptage est utilisée pour générer une variable de cryptage en utilisant deux tableaux, l'état et la clé et le nombre N d'opérations de mélange. Ces opérations de mélange consistent à échanger des octets, des opérations modulo et d'autres formules.

Dans le projet joint, vous pouvez voir comment je le fais dans la propriété set EncryptionKey de la classe RC4Engine.

c'est un article intéressant pour ce sujet - http://www.codeproject.com/Articles/5068/RC4-Encryption-Algorithm-C-Version

Questions connexes