⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 transpositioncipher.java

📁 一个简单的对文章进行加密程序
💻 JAVA
字号:
import sheffield.EasyReader;

public class TranspositionCipher {

	public static String createRandomString(int len) {
		if (len > 0) {
			char[] cs = new char[len];
			for (int i = 0; i < len; i++) {
				cs[i] = (char) (Math.floor(Math.random() * 26) + 'a');
			}
			return new String(cs);
		} else {
			return "";
		}
	}

	public static String readFile(String fileName) {
		String result = "";
		EasyReader file = new EasyReader(fileName);
		while (!file.eof()) {
			result += file.readString();
		}
		return result;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String ciphertext = readFile("plain.txt");
                EasyReader kb= new EasyReader();
                String s=kb.readString();
                
		Key key = new Key(s);
		// 拼凑出是key长度倍数的字符串
		ciphertext += createRandomString(key.getLength() - ciphertext.length()
				% key.getLength());
		// 转换成大写的字符数组
		char[] cs = ciphertext.toUpperCase().toCharArray();
		// 二维数组共有几行
		/*  j  a  m  e  s  b  o  n  d
		 * (5)(1)(6)(4)(9)(2)(8)(7)(3)
		 *  s  e  n  d     o  n  e   
		 *  m  i  l  l  i  o  n     e
		 *  u  r  o  s     t  o     m
		 *  y     s  w  i  s  s     b
		 *  a  n  k     a  c  c  o  u
		 *  n  t  a  b  c  d  e  f  g
		 *  
		 *  rowNumber = 6;
		 *  
		 *  */
		int rowNumber = cs.length / key.getLength();
		// 序列数组
		int[] sequence = key.getSequence();
		// 构建一个结果字符串数组
		char[] result = new char[cs.length];
		// 我们现在要做的就是将横向的数组变成纵向的
		for (int i = 0; i < sequence.length; i++) {
			for (int j = 0; j < rowNumber; j++) {
				// 我们可以把result看成有9行6列的数组
				result[(sequence[i] - 1) * rowNumber + j] = cs[j
						* key.getLength() + i];
			}
		}
		System.out.println(new String(result));

	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -