资源简介
网络信息安全里的hill算法,java代码
代码片段和文件信息
package com.abel.hill;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Hill {
private int[][] cipherMatrix = new int[2][2];
private int[] sourceMatrix = {11387};
public Hill(){
initTwoDimisionsCipherMatrix();
}
/**
* 用给定的可逆矩阵来初始化加密矩阵
*/
private void initTwoDimisionsCipherMatrix(){
for (int i = 0; i<2; i++) {
for (int j=0; j<2; j++) {
this.cipherMatrix[i][j] = sourceMatrix[i*2+j];
}
}
}
/**
* 返回加密矩阵
* @return
*/
public int[][] getCipherMatrix(){
return this.cipherMatrix;
}
/**
* 返回加密矩阵的逆阵
* @return
*/
public int[][] getInverseMatrix() {
int[][] matrix = new int[2][2];
matrix[0][0] = cipherMatrix[1][1];
matrix[1][1] = cipherMatrix[0][0];
matrix[1][0] = (2600 - cipherMatrix[1][0])%26;
matrix[0][1] = (2600 - cipherMatrix[0][1])%26;
return matrix;
}
/**
* 加密
* @param encryptMatrix
* @param c
* @return
*/
public char[] encrypt(int encryptMatrix[][] String source){
char c[] = source.toCharArray();
if(c.length%2!=0)
c = (String.valueOf(c) + “x“).toCharArray();
char[] b = new char[c.length];
for(int i = 0;i b[i]=(char)(((2600+((c[i]-65)*encryptMatrix[0][0]+(c[i+1]-65)*encryptMatrix[0][1]))%26)+65);
b[i+1]=(char)(((2600+((c[i]-65)*encryptMatrix[1][0]+(c[i+1]-65)*encryptMatrix[1][1]))%26)+65);
}
return b;
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1504 2012-01-04 15:28 hill\Hill.java
文件 844 2012-01-04 15:28 hill\HillTest.java
目录 0 2012-01-06 03:27 hill
----------- --------- ---------- ----- ----
2348 3
评论
共有 条评论