quocvuongdn icon

#Csharp: #RC 4 + Base64

quocvuongdn | PRO | 12/26/14 02:49:38 AM UTC | 0 ⭐ | 444 👁️ | Never ⏰ | []
C# |

1.81 KB

|

None

|

0 👍

/

0 👎

using System.IO;
using System;
using System.Text;
 
class Program
{
    static void Main()
    {
        String input = "data của anh nè";
        String key = "aaa";
        String encryptedStr = Program.Encrypt(input, key);
        String decryptedStr = Program.Decrypt(encryptedStr, key);
        Console.WriteLine("Input string: {0} \nKey: {1}", input, key);
        Console.WriteLine("Encrypted: {0}\nDecrypted: {1}", encryptedStr, decryptedStr);
    }
    
    static string Encrypt(string input, string key){
        byte[] plainTextBytes = System.Text.Encoding.UTF8.GetBytes(input);
        byte[] encrypted = RC4(plainTextBytes, key);
        return System.Convert.ToBase64String(encrypted);
    }
    
    static string Decrypt(string input, string key){
        byte[] base64EncodedBytes = System.Convert.FromBase64String(input);
        byte[] bin = RC4(base64EncodedBytes, key);
        return System.Text.Encoding.UTF8.GetString(bin);
    }
    
    public static byte[] RC4(byte[] data, string pwdKey) {
        int a, i, j, k, tmp;
        int[] key, box;
        byte[] cipher;
    
        key = new int[256];
        box = new int[256];
        cipher = new byte[data.Length];
        byte[] pwd = System.Text.Encoding.UTF8.GetBytes(pwdKey);
    
        for (i = 0; i < 256; i++) {
          key[i] = pwd[i % pwd.Length];
          box[i] = i;
        }
        for (j = i = 0; i < 256; i++) {
          j = (j + box[i] + key[i]) % 256;
          tmp = box[i];
          box[i] = box[j];
          box[j] = tmp;
        }
        for (a = j = i = 0; i < data.Length; i++) {
          a++;
          a %= 256;
          j += box[a];
          j %= 256;
          tmp = box[a];
          box[a] = box[j];
          box[j] = tmp;
          k = box[((box[a] + box[j]) % 256)];
          cipher[i] = (byte)(data[i] ^ k);
        }
        return cipher;
    }
 
}

Comments