2010-10-01 49 views
7

128 bit RC4 şifrelemesi gerçekleştirmem gerekiyor, .NET ve C# kullanıyorum. Bunu yapmak için yerleşik bir işlev var mı.RC4 128 bit şifreleme C#

Değilse, bunu yapabilirim bu işlevi bulundu:

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

Ama 128 bit veya olmasın, görünüşe 256 ise bilmiyorum, ama gerçekten farkı bilmiyorum .

+0

Eğer RC4 algoritmasını kullanmak zorunda mıyım? – Kamyar

+0

@Kamyar - Evet, RC4 128 bit şifreleme olmalı. – Steven

cevap

0

Net Framework'de RC4 algoritması olmadığını söyleyebilirim. Bir RC2 şifresi var ... ama RC4 yok.

+0

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

2

Anahtar ayarları, bu algoritmanın ilk ve en zor aşamasıdır. Bir N bit anahtar kurulumu sırasında (N anahtar uzunluğunuz), şifreleme anahtarı iki diziyi, durumu ve anahtarı ve N-karıştırma işlemi sayısını kullanarak bir şifreleme değişkenini oluşturmak için kullanılır. Bu karıştırma işlemleri, takas bayt, modulo işlemleri ve diğer formüller içerir.

Ekli projede, RC4Engine sınıfının EncryptionKey set özelliğinde nasıl yaptığımı görebilirsiniz.

bu konuda ilginç bir makale - http://www.codeproject.com/Articles/5068/RC4-Encryption-Algorithm-C-Version