2010-10-01 83 views
7

Tôi cần thực hiện mã hóa RC4 128 bit, tôi đang sử dụng .NET và C#. Có chức năng tích hợp để thực hiện điều này không.Mã hóa RC4 128 bit trong C#

Nếu không, tôi tìm thấy chức năng này có thể làm điều đó:

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

Nhưng tôi không biết nếu nó là 128-bit hay không, nó trông giống 256, nhưng tôi thực sự không biết sự khác biệt .

+0

Bạn có phải sử dụng thuật toán RC4 không? – Kamyar

+0

@Kamyar - Có, nó phải là mã hóa RC4 128 bit. – Steven

Trả lời

3

Theo http://en.wikipedia.org/wiki/Rc4 thuật toán RC4 có thể có keylength mà có thể là trong khoảng 1 ≤ keylength ≤ 256
Dưới đây là một ví dụ mà bạn có thể xác định kích thước chính: http://tofuculture.com/Blog/post/RC4-Encryption-in-C.aspx
Tải về nguồn và xem RC4.cs.

+0

Điều này giúp, cảm ơn. Tôi cho rằng tôi chỉ có thể thay thế 256 bằng 128. – Steven

+0

@Steven: Không sao cả. mừng vì tôi có thể giúp. – Kamyar

0

Tôi có thể cho bạn biết rằng không có thuật toán RC4 trong .Net Framework. Có một mật mã RC2 ... nhưng không có RC4.

+0

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

2

Thiết lập khóa là giai đoạn đầu tiên và khó khăn nhất của thuật toán này. Trong quá trình thiết lập khóa N-bit (N là chiều dài khóa), khóa mã hóa được sử dụng để tạo ra một biến mã hóa bằng cách sử dụng hai mảng, trạng thái và khóa, và N-số hoạt động trộn. Các hoạt động trộn này bao gồm trao đổi byte, hoạt động modulo và các công thức khác.

Trong dự án đính kèm, bạn có thể thấy cách tôi thực hiện trong thuộc tính bộ mã hóa khóa của lớp RC4Engine.

đây là một bài viết thú vị cho chủ đề này - http://www.codeproject.com/Articles/5068/RC4-Encryption-Algorithm-C-Version

Các vấn đề liên quan