• 大小: 7KB
    文件类型: .java
    金币: 1
    下载: 0 次
    发布日期: 2021-10-23
  • 语言: Java
  • 标签: 替换密码  

资源简介

这是一个完整的传统加密思想,替换密码(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; 
 
                } 
 
          

评论

共有 条评论

相关资源