javascript实现playfair和hill密码算法

时至期末,补习信息安全概论作业。恰巧遇古典密码学算法中的playfair算法和hill算法,用javascript语言实现起来是在有趣,边查百度边编码,顺便好好补习一下javascript基础。

playfair

Playfair密码(英文:Playfair cipher 或 Playfair square)是一种替换密码。依据一个5*5的正方形组成的密码表来编写,表中排列有25个字母。对于英语中的26个字母,去掉最常用的Z,构成密码表。

实现思路:

1,编制密码表

  密钥是一个单词或词组,密码表则根据用户所给出的密钥整理而出。若有重复字母,可将后面重复的字母去掉。 

如密钥crazy dog,可编制成

C

 

O

 

H

 

M

 

T

 

R

 

G

 

I

 

N

 

U

 

A

 

B

 

J

 

P

 

V

 

Y

 

E

 

K

 

Q

 

W

 

D

 

F

 

L

 

S

 

X

 

复制代码 代码如下:


/*
*    功能:编制密码表
*
*    参数:密钥(经过去除空格和大写处理)
*
*    返回:密码表
*/
function createKey(keychars){
       //字母顺序数组
    var allChars = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y'];
       //变量keychars获取字母在字母顺序表中位置,删除该字母
    for(var i = 0 ;i<keychars.length;i++){
        var index = allChars.indexOf(keychars[i]);
        if (index > -1) {
            allChars.splice(index, 1);
        }
    }
       //将keychar中的字母插入到字母表中
    for(var i = keychars.length-1;i>=0;i--){
        allChars.unshift(keychars[i]);
    }
        //从第一列将keychars插入至密码表
    for(var i = 0 ; i<5 ; i++){
        for(var j = 0; j<5 ;j++){
            key[j][i] = allChars[i*5+j];
        }
    }
}   

考虑将keychars插入到密码表时需要去除重复字符和Z,设计算法如下:

复制代码 代码如下:


/*
*    功能:去除字符串中重复字母
*
*    参数:需要进行处理的字符串
*
*    返回:处理过的字符串
*/
function removeDuplicate(str){
    var result = [],tempStr = "";
    var arr = str.split('');//把字符串分割成数组
        //arr.sort();//排序
        for(var i = 0; i < arr.length; i++){
            var repeatBack = true;//设计变量是为确保字符串前部分不存在相同字符,因为以下算法只能确保连在一起相同的字符
            for(var j = 0;j<result.length ;j++){
                if(arr[i] == result[j])
                    repeatBack = false;
            }
            if(arr[i] !== tempStr && repeatBack){
                result.push(arr[i]);
                tempStr = arr[i];
            }else{
                continue;
            }
        }
        return result.join("");//将数组转换为字符串
}

2,整理明文

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wgxpxw.html