資源簡介
這是一個完整的傳統加密思想,替換密碼(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語言編寫的遞歸下降語法分析器
評論
共有 條評論