package 加密;
public class rc4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("你输入的密钥字符串是:");
String key = input.next(); //输入密钥
char[] char1 = key.toCharArray();
int keylen=key.length();
int s[]=new int[256] ;
int t[]=new int[256];
for(int i=0;i<256;i++){ //初始化s
s[i]=i;
t[i]=(int)char1[i%keylen];
}
int j=0;
int shu=0;
for(int i=0;i<256;i++){
j=(j+s[i]+t[i])%256;
shu=s[i];
s[i]=s[j];
s[j]=shu;
}
System.out.print("你输入的所需加密明文是:");
String mw = input.next();
System.out.println(mw);//输入明文
int len1=mw.length();
char[] char2 = mw.toCharArray();
int a=0;
int b=0;
int e=0;
int miyao[]=new int[len1]; //密钥流生成
while(e<len1){
a=(a+1)%256;
b=(b+s[a])%256;
shu=s[a];
s[a]=s[b];
s[b]=shu;
j=(s[a]+s[b])%256;
miyao[e]=s[j];
e++;
}
char[] miwen=new char[len1];
for(int i=0;i<len1;i++){
miwen[i]=(char)(miyao[i]^(int)char2[i]);
}
for(int i=0;i<len1;i++){
System.out.print(miwen[i]);
}
}
}
public class rc4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("你输入的密钥字符串是:");
String key = input.next(); //输入密钥
char[] char1 = key.toCharArray();
int keylen=key.length();
int s[]=new int[256] ;
int t[]=new int[256];
for(int i=0;i<256;i++){ //初始化s
s[i]=i;
t[i]=(int)char1[i%keylen];
}
int j=0;
int shu=0;
for(int i=0;i<256;i++){
j=(j+s[i]+t[i])%256;
shu=s[i];
s[i]=s[j];
s[j]=shu;
}
System.out.print("你输入的所需加密明文是:");
String mw = input.next();
System.out.println(mw);//输入明文
int len1=mw.length();
char[] char2 = mw.toCharArray();
int a=0;
int b=0;
int e=0;
int miyao[]=new int[len1]; //密钥流生成
while(e<len1){
a=(a+1)%256;
b=(b+s[a])%256;
shu=s[a];
s[a]=s[b];
s[b]=shu;
j=(s[a]+s[b])%256;
miyao[e]=s[j];
e++;
}
char[] miwen=new char[len1];
for(int i=0;i<len1;i++){
miwen[i]=(char)(miyao[i]^(int)char2[i]);
}
for(int i=0;i<len1;i++){
System.out.print(miwen[i]);
}
}
}