加密代码
import java.util.*;
class fangshe
{
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
int k1,k2;
System.out.println("请输入你的第一个秘钥(k1):");
k1 = input.nextInt();
System.out.println("请输入你的第二个秘钥(k2):");
k2 = input.nextInt();
System.out.println("请输入你的明文");
String str= input.next();
String[] array = new String[26];
for(int i=0;i<26;i++){
array[i]=(char)('A'+i)+"";
}
int length=str.length();
String[] arr = new String[length];
for(int i=0 ;i<length;i++){
arr[i] = str.charAt(i)+"";
}
int index;
for(int i=0; i<length;i++){
for(int j=0;j<26;j++){
if(arr[i].equals(array[j])){
index =j;
int x=(index*k1+k2)%26;
arr[i]=array[x];
break;
}
}
}
for(int i=0;i<length;i++){
System.out.print(arr[i]);
}
}
}
解密算法
import java.util.*;
class jiemi
{
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
int k1,k2;
System.out.println("请输入你的第一个秘钥(k1):");
k1 = input.nextInt();
System.out.println("请输入你的第二个秘钥(k2):");
k2 = input.nextInt();
System.out.println("请输入你的密文");
String str= input.next();
String[] array = new String[26];
for(int i=0;i<26;i++){
array[i]=(char)('A'+i)+"";
}
int key=0;
for(int i=0;i<10000000;i++){
if((k1*i)%26==1){
key=i;
break;
}
}
int length=str.length();
String[] arr = new String[length];
for(int i=0 ;i<length;i++){
arr[i] = str.charAt(i)+"";
}
int index;
for(int i=0; i<length;i++){
for(int j=0;j<26;j++){
if(arr[i].equals(array[j])){
int x=(key*(j-k2))%26;
if(x<0)
x=x+26;
arr[i]=array[x];
break;
}
}
}
for(int i=0;i<length;i++){
System.out.print(arr[i]);
}
}
}
注意:加密秘钥的k1必须和26互素,这个只能支持大写字母的加密