作业6:有短句“Sun Yat-sen University is a vibrant community of scholarship”,请用下列方法加密:–简单代替密码(移位密码),k=5,q=26;–多表代替密码,其中m=6, K=cipher;–纵行置换密码,假定每行10个字节。
请写出加密后密文。
加密结果:简单代替加密:Xzs Dfy-xjs Zsnajwxnyd nx f angwfsy htrrzsnyd tk xhmtqfwxmnu 多表代替加密:Ucc Crv-hlr Wvxciiuqif zu p zzdzpux ewbtyekbn sw aroscczhomg 纵向置换加密:Sntbucu yrnhnU aio nintlYistyaav rteacos-r ofhssvm ieiimsp本作业是使用java编程求解的,以为是求解算法(java语言描述):/** 简单代替加密*/public class Ssc {private String name;private int k;private int q;public Ssc(){this.k = 5;this.q = 26; = "简单代替加密";}/*** k为位移量,q为字母表长度* @param k* @param q*/public Ssc(int k, int q){this.k = k;this.q = q; = "简单代替加密";}/*** 加密* @param str* @return*/public String encrypt(String str){String code = "";char[] c = str.toCharArray();for (int i = 0; i < c.length; i++) { int hc = (int)c[i];if(hc >= 97 && hc <= 122){int t = hc - 97;int tt = (t + k) % q;hc = 97 + tt;}if(hc >= 65 && hc <= 90){int t = hc - 65;int tt = (t + k) % q;hc = 65 + tt;}char temp = (char)hc;code += temp;}return code;}public int getK() {return k;}public void setK(int k) {this.k = k;}public int getQ() {return q;}public void setQ(int q) {this.q = q;}public String getName() {return name;}public void setName(String name) { = name;}}/** 多表代替加密*/public class Psc {private String name;private int m;private String K;public Psc(){this.m = 6;this.K = "run"; = "多表代替加密";}/*** m为密钥长度,K为密钥* @param m* @param K*/public Psc(int m, String K){this.m = m;this.K = K; = "多表代替加密";}/*** 加密* @param str* @return*/public String encrypt(String str){String code = "";char[] c = str.toCharArray();char[] k = K.toCharArray();for (int i = 0; i < c.length; i++) { int hc = (int)c[i];int ki = i;if(i >= k.length){ki = i % k.length;}int kt = k[ki] - 97;if(hc >= 97 && hc <= 122){int t = hc - 97;int tt = (t + kt) % 26;hc = 97 + tt;}if(hc >= 65 && hc <= 90){int t = hc - 65;int tt = (t + kt) % 26;hc = 65 + tt;}char temp = (char) hc;code += temp;}return code;}public int getM() {return m;}public void setM(int m) {this.m = m;}public String getK() {return K;}public void setK(String k) {K = k;}public String getName() {return name;}public void setName(String name) { = name;}}/** 纵向置换加密*/public class Wrc {private String name;private int skip;public Wrc(){this.skip = 10; = "纵向置换加密";}/*** skip为间隔* @param skip*/public Wrc(int skip){this.skip = skip; = "纵向置换加密";}/*** 加密* @param str* @return*/public String encrypt(String str){String code = "";int len = str.length();int group_len = ((len%skip)==0)? len/skip : len/skip + 1;char groups[][] = new char[100][100];char[] c = str.toCharArray();int cc = c.length / skip;int cr = c.length % skip;if(cr != 0){for (int i = 0; i < skip - cr; i++) {c[c.length + i] = 0;}}for (int i = 0; i < group_len; i++) {for (int j = 0; j < skip; j++) {groups[i][j] = c[i*skip + j];// System.out.print(groups[i][j]);}}for (int j = 0; j < skip; j++){for (int i = 0; i < group_len; i++) {code += groups[i][j];}}return code;}public int getSkip() {return skip;}public void setSkip(int skip) {this.skip = skip;}public String getName() {return name;}public void setName(String name) { = name;}}/** main方法*/public class Main {public static void main(String[] args) {String str ="Sun Yat-sen University is a vibrant community of scholarship";Ssc ssc = new Ssc(5, 26);System.out.println(ssc.getName() + ":" + ssc.encrypt(str));Psc psc = new Psc(6, "cipher");System.out.println(psc.getName() + ":" + psc.encrypt(str) );Wrc wrc = new Wrc(10);System.out.println(wrc.getName() + ":" + wrc.encrypt(str));}}。