java实现单表替换算法
单表替换算法是简单的加密算法
public class SingleReplace {
public static final int keys = 96;
public static final int[] key = {25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0};
private static int char2int(char c){
return (int)c - keys;
}
private static char int2char(int v){
return (char)(v+keys);
}
public static String encode(String str){
str = str.toLowerCase(Locale.ENGLISH);
char[] chars = str.toCharArray();
char[] encodes = new char[chars.length];
int currentCharV;
for(int i = 0 ; i < chars.length ; i ++){
currentCharV = char2int(chars[i]);
if(currentCharV < 0 || currentCharV > 25){
encodes[i] = chars[i];
}else{
encodes[i] = int2char(key[currentCharV]);
}
}
return new String(encodes);
}
private static int char2int1(char c){
return (int)c + keys;
}
private static char int2char1(int v){
return (char)(v-keys);
}
public static String transcode(String str){
str = str.toLowerCase(Locale.ENGLISH);
char[] chars = str.toCharArray();
char[] encodes = new char[chars.length];
int currentCharV;
for(int i = 0 ; i < chars.length ; i ++){
currentCharV = char2int1(chars[i]);
if(currentCharV < 0 || currentCharV > 25){
encodes[i] = chars[i];
}else{
encodes[i] = int2char(key[currentCharV]);
}
}
return new String(encodes);
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入带加密的明文:");
String test = sc.nextLine();
System.out.println(encode(test));
System.out.println(transcode(test));
}
}