将密文分组,分组组数= 密文长度/密钥长度,每组中的字符按照密钥中的序列排序。例如:
加密:
message:thisiscipher
secret key:312(密钥为数字,最大数字默认为密钥长度,密钥中各位数字不同)
组数:12/3 = 4 => thi sis cip her
根据密钥312,thi 变成ith
其余组同理,得到密文ith ssi pci rhe
去掉空格:ithssipcirhe
解密则反之
实现思路:
创建一个二维数组,密钥长度作为行数大小,message长度除密钥长度获得列数的大小。
得到一个原始排列顺序为123的二维数组,排列方式:
t h i
s i s
c i p
h e r
然后进行312顺序置换
i t h
s s i
p c i
r h e
循环输出后及实现效果:ithssipcirhe
package demo5;
import java.util.Scanner;
public class test2 {
private final static String key = "312";
private static String code1; //decrypt中加密文长度
private static String l_message; //encrypt中的message传到解密中
/**
* 加密
*/
private static void encrypt() {
Scanner scanner = new Scanner(System.in);
String message = scanner.nextLine();
StringBuilder sb = new StringBuilder();
int length = message.length();
int length2 = test2.key.length();
//确定几行
int ret = length % length2;
int rows;
if (ret == 0) {
rows = length / length2;
} else {
rows = (length / length2) + 1;
}
System.