📄 form1.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 + -