题目要求是这样的,输入明文,输入密钥,用Vigenere加密算法进行加密,得到密文。然后通过明文和密文,再次反推出密钥。
基本上没有什么难点。就是反推密钥时,得到的有重复的密钥串,于是用了穷举法,对每种长度的密钥串子串进行测试,通过明文能够完全匹配出密文的,并且是第一次出现的,就取那个子串作为反推的密钥。
还有个问题没花时间解决,就是目前还不能处理输入的明文带空格的情况。
代码如下:
import java.util.Scanner;
public class Vigenere {
static char[] wordTable = new char[] { 'a', 'b', 'c', 'd', 'e', 'f', 'g',
'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
'u', 'v', 'w', 'x', 'y', 'z', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
'h', 'i', 'j', 'k', 'l', 'm'