维吉尼亚密码
来源于百度百科
维吉尼亚密码_百度百科
具体代码
import java.util.*;public class WJMYmm {//常量 26public static final int N = 26;//密码public static void main(String[] args) {//字母String ZM="abcdefghijklmnopqrstuvwxyz";char[] zm = ZM.toCharArray();//字符串转数组char[][] zmb=new char[N][N];for (int i = 0; i < N; i++) {for(int j = 0;j < N;j++) {zmb[i][j]=(char) (zm[j] + i);if (zmb[i][j] >= 'a' && zmb[i][j] <= 'z'){zmb[i][j] = (char) ( zmb[i][j]- 32);//大小写转换}else {zmb[i][j] = (char) (zmb[i][j] - N);//循环zmb[i][j] = (char) ( zmb[i][j]- 32);//大小写转换}}}System.out.println(zm);//输出字母表for(int i = 0;i < N;i++) {for(int j = 0;j < N;j++) {System.out.print(zmb[i][j]+" ");}System.out.println("");}//明文String MW="ATTACKATDAWN";char[] mw=MW.toCharArray();System.out.print("明文:");System.out.println(mw);//密钥String KEY="LEMONLEMONLE";char[] key=KEY.toCharArray();System.out.print("密钥:");System.out.println(key);//加密char[] miw=new char[mw.length];for(int i = 0;i < mw.length;i++) {int h=key[i]-65;// System.out.println(h);int l=mw[i]-65;// System.out.println(l);miw[i]=zmb[h][l];}System.out.print("密文:");System.out.println(miw);//解密char[] jm=new char[key.length];for(int i = 0;i < key.length;i++) {int h=key[i]-65;for(int j = 0;j < N;j++) {if(zmb[h][j]==miw[i]){jm[i]=zmb[0][j];break;}}}System.out.print("解密后:");System.out.println(jm);}
}
运行结果