中文信息文件加密如何通過(guò)擴(kuò)展Playfair密碼實(shí)現(xiàn)

Playfair密碼僅用了25個(gè)英文字母,雙字母組合為25* 25=625種,破譯難度相對(duì)較低,但不適合漢字信息文件加密?;谝陨锨闆r,我們提出了擴(kuò)展的Playfair密碼,將雙字母組合改為雙字節(jié)組合,以適應(yīng)漢字信息文件和一般二進(jìn)制信息文件的加密。

一、Playfair密碼

Playfair密碼的算法是基于使用一個(gè)5*5字母矩陣,該矩陣使用一個(gè)關(guān)鍵詞構(gòu)造。設(shè)關(guān)鍵詞是ruonarehy。矩陣的構(gòu)造方法是:從左到右、從上到下填入關(guān)鍵詞的字母(去除重復(fù)字
母),然后再以字母表順序下將余下的字母填入矩陣剩余空間。字母I和J被看作一個(gè)字母,如下表所示。

中文信息文件加密如何通過(guò)擴(kuò)展Playfair密碼實(shí)現(xiàn)
Playfair密碼系統(tǒng)根據(jù)下列規(guī)則一次對(duì)明文文件的兩個(gè)字母加密:

1、相同對(duì)中的重復(fù)明文字母將用一個(gè)填充字母如X進(jìn)行分隔,因此單詞bklloon將破分隔為hi lx lo on。

2、屬于該矩陣相同行的明文字母將由其右邊的字母代替,而行的最后一個(gè)字母由行的第一個(gè)字母代替。例如,ar被加密為RM。

3、屬于該矩陣相同列的明文字母將由其下面的字母代替,而列的最后一個(gè)字母由列的第一個(gè)字母代替。例如,mu被加密為CM。

4、否則,明文的其他字母將由與其同行,且與另一個(gè)字母同列的字母所代替。因此,hs被加密為BP,ud被加密為CZ。

二、擴(kuò)展Playfair密碼——Eplayfair密碼

由于Playfair密碼系統(tǒng)的明文和密文僅包含25個(gè)英文字母,因此不能用于加密中文信息文件和一般二進(jìn)制信息文件。為了使Playfair密碼能夠用于中文信息文件和一般二進(jìn)制信息文件加密,將Playfair密碼系統(tǒng)的5*5矩陣擴(kuò)展為16*16矩陣,矩陣的每個(gè)方格中放置一個(gè)字節(jié),放置的順序隨關(guān)鍵詞的不同而不同。

矩陣的構(gòu)造方法是:從左到右、從上到下填入關(guān)鍵詞的字節(jié)(去除重復(fù)字節(jié)),然后再以字節(jié)順序?qū)⒂嘞碌淖止?jié)填入矩陣剩余空問(wèn)。把經(jīng)過(guò)擴(kuò)展的Playfair密碼稱為Eplayfair密碼。

EPlavfair密碼系統(tǒng)根據(jù)下列規(guī)則一次對(duì)明文文件的兩個(gè)字母加密:相同對(duì)中的重復(fù)明文文件字節(jié)將用一個(gè)填充字節(jié)進(jìn)行分隔,填充字節(jié)可自由選取,例如關(guān)鍵詞的第一個(gè)字節(jié);屬于該矩陣相同行的明文字節(jié)將由其右邊的字節(jié)代替,而行的最后一個(gè)字節(jié)由行的第一個(gè)字節(jié)代替;屬于該矩陣相同列的明文文件字節(jié)將由其下面的字節(jié)代替,而列的最后一個(gè)字節(jié)由列的第一個(gè)字節(jié)代替;否則,明文文件的其它字節(jié)將由與其同行,且與另一個(gè)字節(jié)同列的字節(jié)所代替。

EPlayfair密碼系統(tǒng)根據(jù)下列規(guī)則—次對(duì)密文文件的兩個(gè)字節(jié)解密:屬于該矩陣相同行的密文文件字節(jié)將由其左邊的字節(jié)代替,而行的第一個(gè)字節(jié)由行的最后一個(gè)字節(jié)代替;屬于該矩陣相同列的密文文件字節(jié)將由其上面的字節(jié)代替,而列的第一個(gè)字節(jié)由列的最后一個(gè)字節(jié)代替;否則,密文文件的其它字節(jié)是由與其同行,且與另一個(gè)字節(jié)同列的字節(jié)所代替;密文文件的兩個(gè)字節(jié)解密成明文后,若第二個(gè)字節(jié)與填充字節(jié)相同,且第一個(gè)字節(jié)與下一對(duì)明文的第一字節(jié)相同,則去掉填充字節(jié)。

Eplayffur密碼與Playfair密碼相比有了很大的進(jìn)步:

第一、EPlayfair密碼的雙字節(jié)組合有256*256=65536種,而Playfair密碼只有25*25=625種雙字母組合,因此識(shí)別雙字節(jié)組合要困難得多;

第二,在一般的二進(jìn)制文件中,各字節(jié)出現(xiàn)的機(jī)會(huì)均等,所以,EPlayfair完全屏蔽了字母的頻率分布;

第三,Epliyfair密碼適合于中文信息文件和一般二進(jìn)制信息文件加密。

EPlayfair密碼是一種易于實(shí)現(xiàn)且執(zhí)行速度非??斓拿艽a系統(tǒng),尤其適于對(duì)大容量的中文信息文件或二進(jìn)制信息文件加密。為了進(jìn)一步加大破譯難度,可對(duì)EPlayfair密碼系統(tǒng)進(jìn)行適當(dāng)?shù)母?br /> 變,例如,選擇不同的重復(fù)填充字節(jié);改變矩陣相同行或相同列字節(jié)的替換方法等。

三、中文信息文件加密如何通過(guò)擴(kuò)展Playfair密碼實(shí)現(xiàn)

1、根據(jù)關(guān)鍵測(cè)填充EPlayfair矩陣

repch=KeyWord. c_Str( )[0];//重復(fù)明文的填充字節(jié)

for (int i =0;i<KeVWord. Length();i++)

{

//在矩陣中填入關(guān)鍵詞

ch=KeyWord. c_Str( )[i];

if(i>0)

{

if(memchr( pftab, ch, index)==NULL)

pftab[0]}[index++]=ch;

}

else pftab[0][index++]=ch;

}

fpr(inti=0;i<256;i++)=ch;

//用余下的宇節(jié)填入剩余的矩陣空間

ch=i;

if(memchr (pftab; ch* index)==NULL)

pftab[0][index++]=ch;

}

2、EPlayfair加密過(guò)程

設(shè)明文字節(jié)對(duì)在矩陣中的行列號(hào)分別為(y1, x1)和(y2,x2), Eplayfair密碼的加密過(guò)程:

ch =buf[0];

pos1=(char* );memchr( pftab[0], ch, 256) - pftab[0];

ch=buf[1];

pos2=(char*);memchr( pftab[0],ch,256)-pftab[0];

x1= pos1; x2=pos2%;

y1=pos1/16; y2 = pos2/16;

if(y1==y2)

if ( x1==15) ;buf [0] = pftab[y1 ][o];

else buf [0 ] =pftab[y1] _[x1+1];

if(x2==15) ;buf[o]=pftab[y2][o];

else buf [0]= pftab[y2] _[x2+1];

}

if(x1==x2)

if(y1==15)_buf [0] = pftab[0][x1];

else buf [0]= pftab[y1+1 ] _[x1];

if(y2==15)_buf [0] = pftab[0][x2];

else buf [0]= pftab[y2+1 ] _[x2];

}

else{

buf[0]=pftab[y1],[x2]

buf[1]=pftab[y2],[x1]

}

3. FPlayfair解密過(guò)程

解密為加密的逆過(guò)程。

小知識(shí)之Playfair密碼

Playfair密碼出現(xiàn)于1854年,它將明文中的雙字母組合作為一個(gè)單元對(duì)待,該加密法是基于一個(gè)關(guān)鍵詞的,該關(guān)鍵詞填寫在一個(gè)5*5的矩陣中(去出重復(fù)字母和字母j),通過(guò)該矩陣完成對(duì)明文文件加密和密文文件解密過(guò)程。