资源简介
这是一个完整的传统加密思想,替换密码(Playfair密码)的算法实现(基于java开发环境)
代码片段和文件信息
import java.util.*;
public class PlayfairCoder{
public static int checkChar(char c){
if(c>=‘A‘&&c<=‘Y‘)
return 1;
else
return 0;
}
/*
*格式化密钥材料
*/
public static String formatKey(String key){
StringBuffer sb=new StringBuffer();
HashSet hs=new HashSet();
char n;
String k=key.toUpperCase();
char[] detail=new char[25];
for(int i=0j=65;i<25;i++j++)
detail[i]=(char)j;
for(int i=0;i
n=k.charAt(i);
if(!hs.contains(n)&&checkChar(n)==1){
sb.append(n);
hs.add(n);
}
}
int i=0;
while(sb.length()!=25){
char t=detail[i];
if(!hs.contains(t)){
sb.append(t);
hs.add(t);
}
i++;
}
return sb.toString();
}
/*
*生成密钥矩阵
*/
public static char[][] initKey(String k){
char[][] key=new char[5][5];
String s=formatKey(k);
int m=0;
for(int i=0;i<5;i++)
for(int j=0;j<5;j++){
key[i][j]=s.charAt(m);
m++;
}
return key;
}
/*
*格式化明文
*/
public static String formatData(String dataString sign){
String updata=data.toUpperCase();
String ming=““temp=““;
char c;
Stack stack=new Stack();
for(int i=0;i
c=updata.charAt(i);
if(checkChar(c)==1){
if(stack.size()%2!=0){
if(stack.peek()==c){
stack.push(sign.charAt(0));
stack.push(c);
}
else
stack.push(c);
}
else
stack.push(c);
}
}
while(stack.size()>0)
temp+=stack.pop();
for(int i=temp.length()-1;i>-1;i--)
ming+=temp.charAt(i);
if(ming.length()%2!=0)
ming+=sign.charAt(0);
return ming;
}
public static String getEnData(char achar bchar[][] k){
String result=““;
int h=0l=0m=0n=0;
for(int i=0;i
for(int j=0;j
if(a==k[i][j]){
h=i;
l=j;
}
- 上一篇:观察者模式编写的股票分析程序
- 下一篇:用java语言编写的递归下降语法分析器
评论
共有 条评论