Menu

And even simpler implementation to work with

Anonymous
2008-10-04
2013-04-11
  • Anonymous

    Anonymous - 2008-10-04

    with files things get easier

    namespace Encryption
    {
        public class RC4
        {
            private const int EncodingCode = 1251;
           
            public void Encrypt(string password, string file, string targetFile)
            {
                byte[] passwordToPass = System.Text.Encoding.Default.GetBytes(password);
                byte[] content = encrypt(passwordToPass, File.ReadAllBytes(file));
                File.WriteAllBytes(targetFile, content);
            }

            public void Decrypt(string password, string file, string targetFile)
            {
                Encrypt(password, file, targetFile);
            }

            private byte[] encrypt(byte[] password, byte[] data)
            {
                int a, i, j, k, tmp, pwd_length, data_length;
                int[] key, sbox;
                byte[] cipheredData;

                pwd_length = password.Length;
                data_length = data.Length;
                key = new int[256];
                sbox = new int[256];
                cipheredData = new byte[data.Length];

                for (i = 0; i < 256; i++)
                {
                    key[i] =  password[i % pwd_length];
                    sbox[i] = i;
                }
                for (j = i = 0; i < 256; i++)
                {
                    j = (j + sbox[i] + key[i]) % 256;
                    tmp = sbox[i];
                    sbox[i] = sbox[j];
                    sbox[j] = tmp;
                }
                for (a = j = i = 0; i < data_length; i++)
                {
                    a = (a + 1) % 256;
                    j = (j + sbox[a]) % 256;
                   
                    //swap
                    tmp = sbox[a];
                    sbox[a] = sbox[j];
                    sbox[j] = tmp;
                   
                    k = sbox[((sbox[a] + sbox[j]) % 256)];
                    cipheredData[i] = (byte)(data[i] ^ k);
                }
                return cipheredData;
            }
        }
    }

     
  • Anonymous

    Anonymous - 2011-04-15

    Please check Patch #3286697 for more details on a more simple version of the project.

     

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.