亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

javascript實現playfair和hill密碼算法

2019-11-20 13:47:49
字體:
來源:轉載
供稿:網友

時至期末,補習信息安全概論作業。恰巧遇古典密碼學算法中的playfair算法和hill算法,用javascript語言實現起來是在有趣,邊查百度邊編碼,順便好好補習一下javascript基礎。

playfair

Playfair密碼(英文:Playfair cipher 或 Playfair square)是一種替換密碼。依據一個5*5的正方形組成的密碼表來編寫,表中排列有25個字母。對于英語中的26個字母,去掉最常用的Z,構成密碼表。

實現思路:

1,編制密碼表

  密鑰是一個單詞或詞組,密碼表則根據用戶所給出的密鑰整理而出。若有重復字母,可將后面重復的字母去掉?!?/p>

如密鑰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,整理明文

  將明文每兩個字母組成一對。如果成對后有兩個相同字母緊挨或最后一個字母是單個的,就插入一個字母X。初期編碼時考慮不周到,強硬地拒絕輸入字母個數為單數,用戶體驗不佳。

var k = document.getElementById("keychars").value.toUpperCase().replace(//s/ig,'');
對明文去除空格和轉換為大寫處理。

3,編寫密文

明文加密規則(出自百度):
 
1 )若p1 p2在同一行,對應密文c1 c2分別是緊靠p1 p2 右端的字母。其中第一列被看做是最后一列的右方。如,按照前表,ct對應oc
2 )若p1 p2在同一列,對應密文c1 c2分別是緊靠p1 p2 下方的字母。其中第一行被看做是最后一行的下方。
3 )若p1 p2不在同一行,不在同一列,則c1 c2是由p1 p2確定的矩形的其他兩角的字母(至于橫向替換還是縱向替換要事先約好,或自行嘗試)。如按照前表,wh對應tk或kt。
 
如,依照上表,明文where there is life,there is hope.
可先整理為wh er et he re is li fe th er ei sh op ex
然后密文為:kt yg wo ok gy nl hj of cm yg kg lm mb wf
將密文變成大寫,然后幾個字母一組排列。
如5個一組就是KTYGW OOKGY NLHJO FCMYG KGLMM BWF
 
4,解密
將密鑰填寫在一個5*5的矩陣中(去出重復字母和字母z),矩陣中其它未用到的字母按順序填在矩陣剩余位置中,根據替換矩陣由密文得到明文。反其道而行。
 
實現效果如圖:

hill

希爾密碼(Hill Password)是運用基本矩陣論原理的替換密碼。依據一個5*5的正方形組成的密碼表來編寫,表中排列有25個字母。對于英語中的26個字母,去掉最常用的Z,構成密碼表。

實現思路:

1,編寫字母表
var chars = ['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','Z'];
2,隨機生成密匙

復制代碼 代碼如下:

/*
*    功能:隨機生成密鑰
*
*    返回:密匙矩陣
*/
function randomCreateKey(){
    //隨機生成0到26的數字
    for(var i = 0;i<3;i++){
        for(var j = 0;j<3;j++){
            key[i][j] = Math.round(Math.random()*100%26)
        }
    }
}

3,關鍵性代碼,根據自動生成的密匙,對明文進行處理:

復制代碼 代碼如下:

/*
*    功能:hill算法
*
*    參數:長度是3的倍數的大寫數組
*   
*    返回:加密后的字符串
*/
function hill(p){
    //大寫字母密文
    var res = "";
        //制定總共需要對字符串經行遍歷的次數
    var round = Math.round(p.length/3);
    //處理
    for(var b = 0;b<round;b++){
        //明文3
            var temp3 ="";
        var tempArr3 = [];
        var sumArr3 = [];
        for(var i = 0;i<3;i++){
            temp3 += p.shift();
            for(var j = 0;j<chars.length;j++){
                if(temp3[i] == chars[j])
                    tempArr3[i] = j;
            }
        }
                //計算
        for(var i =0;i<3;i++){
            for(var j = 0;j<3;j++){
                sumArr3[i] = (tempArr3[j]*key[i][j])%26;
            }
        }
                //獲取字符在字母表中對應索引
        for(var i =0;i<3;i++){
            res += chars[sumArr3[i]];
        }
    }
    return res;
};

 實現效果如圖:

以上算法存在不足:

         1,面向過程設計,耦合度高

         2,過多嵌套循環,算法效率有待優化

         3,對于可能出現的情況考慮不周到,例如沒有對用戶輸入非字母字符時進行處理。

總結:

學了一段時間的信息安全概論這門課,只能對信息安全了解皮毛。信息安全是一門很有趣的科目,平時遇到一些問題盡可能多思考,多動手,多運用。同時也要加強數學基礎積累,鞏固js基礎,拓寬知識面。這條路任重道遠。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91av在线影院| 2020国产精品视频| 久久成人综合视频| 日韩av中文字幕在线| 中文一区二区视频| 国产精品久久婷婷六月丁香| 欧美在线www| 77777少妇光屁股久久一区| 欧洲成人免费视频| 日韩精品免费视频| 欧美亚洲在线观看| 成人有码在线播放| 国产精品扒开腿做爽爽爽视频| 国产精品一区二区久久久久| 国产精品情侣自拍| 亚洲国产婷婷香蕉久久久久久| 91中文精品字幕在线视频| 国产精品久久久久久av下载红粉| 亚洲电影av在线| 成人网在线视频| 国产最新精品视频| 日韩av有码在线| 成人激情视频小说免费下载| 国产精品青青在线观看爽香蕉| 欧美日韩另类字幕中文| 亚洲福利在线播放| 成人午夜两性视频| 91av在线播放视频| 色爱精品视频一区| 久久久亚洲国产| 国产精品美女午夜av| 久久久久久九九九| 色无极亚洲影院| 亚洲最大成人免费视频| 久久精品精品电影网| 国产精品视频免费观看www| 久久综合免费视频影院| 国产亚洲精品久久久| 免费不卡在线观看av| 国产精品精品国产| 国产精品最新在线观看| 欧美激情成人在线视频| 亚洲欧美综合区自拍另类| 日韩高清电影免费观看完整版| 日韩经典中文字幕| 91a在线视频| 97热精品视频官网| 国产女人精品视频| 欧美激情一区二区三级高清视频| 欧美自拍大量在线观看| 川上优av一区二区线观看| 亚洲精品久久在线| 亚洲国产天堂网精品网站| 亚洲精品不卡在线| 91精品国产高清久久久久久91| 欧美国产高跟鞋裸体秀xxxhd| 日韩视频免费在线观看| 国产精品美女视频网站| 亚洲wwwav| 日韩美女视频免费在线观看| 成人网中文字幕| 久久精品成人动漫| 成人午夜在线影院| 2019中文字幕在线观看| 欧美与欧洲交xxxx免费观看| 精品中文字幕视频| 91禁国产网站| 热re91久久精品国99热蜜臀| 亚洲男人av在线| 97在线看福利| 91在线网站视频| 久久天堂电影网| 国产精品aaaa| 久热爱精品视频线路一| 久久成人国产精品| 在线激情影院一区| 亚洲精品视频免费| 日日狠狠久久偷偷四色综合免费| 日韩成人激情影院| 日韩第一页在线| 欧美日韩精品在线播放| 欧美成人午夜激情在线| 热久久这里只有| 亚洲**2019国产| 成人国产精品久久久久久亚洲| 欧美激情一区二区三区高清视频| 98视频在线噜噜噜国产| 国产精品国产三级国产aⅴ浪潮| 日韩精品免费在线视频观看| 岛国精品视频在线播放| 国产精品一区二区3区| 久久久欧美精品| 国产精品久久久久久久久久久久久| 欧美精品免费在线| 久久人人爽人人| 亚洲久久久久久久久久久| 国产大片精品免费永久看nba| 一本大道久久加勒比香蕉| 日韩欧美亚洲成人| 丝袜一区二区三区| 国产亚洲欧美一区| 国产精品久久久久久久9999| 日韩精品中文字幕视频在线| 亚洲精品国偷自产在线99热| 在线观看视频亚洲| 欧美激情一区二区三区成人| 91中文在线视频| 亚洲xxx大片| 欧美性猛交xxxx| 国产成人在线一区二区| 久久频这里精品99香蕉| 国产午夜精品一区二区三区| 国产福利视频一区二区| 国产日韩亚洲欧美| 色偷偷噜噜噜亚洲男人的天堂| 欧美激情女人20p| 国产精品第8页| 97热在线精品视频在线观看| 日韩电影在线观看免费| 中日韩美女免费视频网址在线观看| 7777kkkk成人观看| 久久偷看各类女兵18女厕嘘嘘| 国产精品美女主播在线观看纯欲| 欧美孕妇与黑人孕交| xx视频.9999.com| 97久久伊人激情网| 91精品视频免费看| 久久久综合免费视频| 欧美激情手机在线视频| 国产成人高潮免费观看精品| 麻豆国产va免费精品高清在线| 欧美剧在线观看| 91久久精品久久国产性色也91| 欧美极品在线视频| 57pao国产精品一区| 亚洲在线视频福利| 在线播放国产精品| 在线一区二区日韩| 精品女同一区二区三区在线播放| 国产视频久久网| 久久精品中文字幕免费mv| 欧美日韩中文字幕| 亚洲福利视频久久| 2019国产精品自在线拍国产不卡| 国产裸体写真av一区二区| 亚洲国产高清高潮精品美女| 色综合久久88色综合天天看泰| 色噜噜国产精品视频一区二区| 亚洲欧美在线免费观看| 欧美中文字幕视频在线观看| 国产精品情侣自拍| 日本中文字幕成人| 国产精品免费视频xxxx| 亚洲色图13p| 亚洲精品美女在线| 精品偷拍一区二区三区在线看| 91在线高清视频| 久久韩剧网电视剧| 精品自拍视频在线观看| 亚洲少妇激情视频| 日本一区二区三区在线播放| 日韩欧美aⅴ综合网站发布| 国产精品扒开腿做爽爽爽视频| 日本精品视频在线观看|