【文件属性】:
文件名称:信息安全技术实验五古典密码算法
文件大小:80KB
文件格式:DOC
更新时间:2016-05-31 15:55:02
信息安全 古典密码算法 置换 替代
1.古典密码算法之 替代算法
import java.io.*;
public class Caesar {
//向右加密方法 ming为明文 mi 为密文 yao为密钥
public static void encode(String ming, int yao) {
String mi = "";
for(int i=0; i= 'a' && ming.charAt(i) <= 'z')
mi += (char)('a' + ((ming.charAt(i) - 'a' + yao) % 26));
else if (ming.charAt(i) >= 'A' && ming.charAt(i) <= 'Z')
mi += (char)('A' + ((ming.charAt(i) - 'A' + yao) % 26));
else if (ming.charAt(i) >= '0' && ming.charAt(i) <= '9')
mi += (char)('0' + ((ming.charAt(i) - '0' + yao) % 10));
}
System.out.println("密文为: " + mi);
}
/*
* 2.古典密码算法之 置换算法
*
*/
public class Change {
//当加密或者解密成功时返回CRYPT_OK,失败时返回CRYPT_ERROR
private final static int CRYPT_OK = 1;
private final static int CRYPT_ERROR = 0;
/*
* @param initCode 没有加密前的字符串
* @CRYPT_OK 加密成功
* @CRYPT_ERROR 加密失败
*/
public static int encrypt(String initCode)
throws Exception{
//用来输出加密后的字符
StringBuilder sb = new StringBuilder();
//获取initCode的字符串长度
int codeLength = initCode.length();
//根据这个codeLength来确定要几行6列
int rows = (int)Math.ceil(codeLength/6.0 );
//构造一个rows行6列的数组
char[][] initChar = new char[rows][6];
//存放initCode中的所有字符,包括空格
for(int i = 0; i < initChar.length; i++ )
for(int j=0; j < initChar[0].length; j++){
//将对应字符放入这个数组中
try{
initChar[i][j] = initCode.charAt(
(i ) * initChar[0].length + j
);
}catch(Exception e){