⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 RC4加解密实现
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace RC4
{
    public partial class Form1 : Form
    {
        int[] mingwen;
        int[] miwen;
        int[] miwen2;
        int[] key;
        int[] s = new int[256];
        public Form1()
        {
            InitializeComponent();
        }

        public void rc4_setup(ref int[] s, ref int[] key)
        {
            for (int i = 0; i < 256; i++)
            {
                s[i] = i; 
            }
            int j = 0;
            int k = 0;
            int length = key.Length;
            int a;
            for (int i = 0; i < 256; i++)
            {
                a = s[i];
                j = (j + a + key[k]);
                if (j >= 256)
                {
                    j = j % 256;
                }
                s[i] = s[j];
                s[j] = a;
                if (++k >= length)
                {
                    k = 0;
                }
            }
        }

        public void rc4_crypt(ref int[] s, ref int[] mingwen, ref int[] miwen)
        {
            int x = 0, y = 0, a, b, c;
            int length = mingwen.Length;
            miwen = new int[length];
            for (int i = 0; i < length; i++)
            {
                x = x + 1;
                x = x % 256;
                a = s[x];
                y = y + a;
                y = y % 256;
                s[x] = b = s[y];
                s[y] = a;
                c = a + b;
                c = c % 256;                
                miwen[i] = mingwen[i] ^ s[c];
            }
        }

        public void rc4_decrypt(ref int[] s, ref int[] miwen, ref int[] miwen2)
        {
            int x = 0, y = 0, a, b, c;
            int length = miwen.Length;
            miwen2 = new int[length];
            for (int i = 0; i < length; i++)
            {
                x = x + 1;
                x = x % 256;
                a = s[x];
                y = y + a;
                y = y % 256;
                s[x] = b = s[y];
                s[y] = a;
                c = a + b;
                c = c % 256;
               miwen2[i] = miwen[i] ^ s[c];
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            String data=textBox1.Text;
            String Skey = textBox2.Text;
            char[] cdata = data.ToCharArray();
            char[] ckey = Skey.ToCharArray();
            mingwen=new int[cdata.Length];
            key = new int[ckey.Length];
            for (int i = 0; i < cdata.Length; i++)
            {
                mingwen[i] = cdata[i]; 
            }
            for (int i = 0; i < ckey.Length; i++)
            {
                key[i] = ckey[i];
            }
            rc4_setup(ref s, ref key);
            rc4_crypt(ref s, ref mingwen, ref miwen);
            char[] mi = new char[miwen.Length];
            for (int i = 0; i < miwen.Length; i++)
            {
                mi[i] = (char)miwen[i];
            }
            String Smi = new String(mi);
            textBox3.Text = Smi;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            String data = textBox4.Text;
            String Skey = textBox5.Text;
            char[] cdata = data.ToCharArray();
            char[] ckey = Skey.ToCharArray();
            miwen = new int[cdata.Length];
            key = new int[ckey.Length];
            for (int i = 0; i < cdata.Length; i++)
            {
                miwen[i] = cdata[i];
            }
            for (int i = 0; i < ckey.Length; i++)
            {
                key[i] = ckey[i];
            }            
            rc4_setup(ref s, ref key);
            rc4_decrypt(ref s, ref miwen, ref miwen2);
            char[] mi = new char[miwen2.Length];
            for (int i = 0; i < miwen2.Length; i++)
            {
                mi[i] = (char)miwen2[i];
            }
            String Smi = new String(mi);
            textBox6.Text = Smi;
        }

        private void textBox3_Click(object sender, EventArgs e)
        {
            textBox4.Text = textBox3.Text;
        }

        private void textBox6_Click(object sender, EventArgs e)
        {
            textBox1.Text = textBox6.Text;
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {
            textBox5.Text = textBox2.Text;
        }       
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -