论文部分内容阅读
摘 要:给出了一种Playfair密码体制的改进方案,将原来对双字母加密,扩展到三字母组合后加密,并给出了在此种状态下的加密方法。通过C语言完成了加密算法的实现,最后用了部分实验数据加以论证。
关键词:PLAYFAIR;加密;算法
中图分类号:TP301.6 文献标识码:A
An improved algorithm based on the Playfair encryption
SHANG Yan-hong,ZHANG Jing
(Tangshan Teacher College, Hebei Tangshan 063000)
Key words: Playfair;encryption;Algorithm
随着网络的普及,信息安全日益受到关注。而密码这门古老的技术不可避免的提上日程。虽然用近代密码学的观点来看,在一战期间,被美军和英军广泛使用的Playfair加密体制很不安全,但是诸如Playfair古典密码的设计原理在编制近代密码时仍有许多借鉴之处。本文在研究了Playfair体制的加密过程后,讨论了一种改进算法。
1 playfair密码算法
该算法将明文中的双字母作为一个单元对待,并将这些单元转换为密文字母组合。替换时基于一个5*5的字母矩阵。字母矩阵的构造方法如下:采用一个关键词(密钥)依次从左到右、从上到下填入矩阵,去除重复字母,然后再将字母表中剩下字母按顺序填入,字母I,J占同一个位置。约定:表中第一列看作是最后一列的右边一列,表中的第一行看作是最后一行的下一行。对一对明文P、Q加密时,按其在矩阵中出现的位置不同分别处理如下:
(1)若P、Q在同一行上,则对应密文分别是仅靠P、Q右端的字母。(2)若P、Q在同一列上,则对应密文分别是仅靠P、Q下方的字母。(3)若P、Q不在同一行,也不在同一列上,则对应密文为以P、Q为对角顶点所确定的矩形的另两个顶点,按同行的原则对应。(4)若P=Q,则插入事先约好的字母再作处理。(5)字母数为奇数,补充事先约好的字母后再处理。
解密是加密的逆过程。
2 改进算法思想
playfair密码考虑的是双字母组合,由此,我们考虑将明文中的三字母作为一个单元对待,替换时考虑3*3*3的字母立方体。字母立方体构造方法如下:采用一个关键词(密钥)依次从上到下从左到右从前到后填入立方体的顶点、棱线中点及面中心,去除重复字母,然后再将字母表中剩下的字母按顺序填入。
对于明文三字母组合,加密时根据它们在3*3*3字母立方体中的位置分别处理如下:
(1)当三字母组合共面时(这里的面约定为立方体的六个面),取字母所在面的对称面上的对应点字母作为密文;(2)当三字母组合其中两个共面时,取两字母所在面的对称面上的对应点字母作为共面字母的密文,另一字母的密文为立方体中心对称点的字母;(3)当三字母组合可看成共两个不同面时,先出现的面优先,同时出现时按左先于右,上先于下,前先于后的顺序确认;(4)当三字母组合均不共面时,取立方体中心对称点的字母为密文;(5)若明文字母个数不为三的倍数时,则在明文的末尾增加某个事先约定的字母补充至三的倍数。
3 实验数据
我们选取了如下数据作处理,待加密的明文为this system is secure.
密钥为my cipher。
由以上算法,加密后的密文为vthz zrciso te zsapxw.
加密算法主要实现代码如下:
void search(int i,char d[26],char c[3][3][3])
//找到文对应3维矩阵的位置(下标)
{int j = 0;
int i1, i2, i3;
int x[3], y[3], z[3];
while( j < i )
{for(i1=0; i1<3; i1++)
for(i2=0; i2<3; i2++)
for(i3=0; i3<3; i3++)
if( d[j] == c[i1][i2][i3] )
{ x[0] = i1;
x[1] = i2;
x[2] = i3; }
for(i1=0; i1<3; i1++)
for(i2=0; i2<3; i2++)
for(i3=0; i3<3; i3++)
if( d[j+1] == c[i1][i2][i3] )
{y[0] = i1;
y[1] = i2;
y[2] = i3; }
for(i1=0; i1<3; i1++)
for(i2=0; i2<3; i2++)
for(i3=0; i3<3; i3++)
if( d[j+2] == c[i1][i2][i3] )
{z[0] = i1;
z[1] = i2;
z[2] = i3; }
judge(x, y, z); //判断共面情况
display(x, y, z, c); //输出(3个字符为一组)
j = j + 3; }}
4 结束语
本文讨论了一种Playfair密码体制的改进算法,将明文字母对改成三字母组合为单元加密,并给出了具体加密方法,实验数据表明,该算法效果较好。下一步,我们将对改进算法的作具体分析,以及讨论能否实现对中文的加密。
参考文献:
[1]张福泰等.密码学教程[M].武汉:武汉大学出版社,2006.
[2]杨波.现代密码学[M].北京:清华大学出版社,2003.
[3]陈鲁生等.现代密码学[M].北京:科学出版社,2002.
关键词:PLAYFAIR;加密;算法
中图分类号:TP301.6 文献标识码:A
An improved algorithm based on the Playfair encryption
SHANG Yan-hong,ZHANG Jing
(Tangshan Teacher College, Hebei Tangshan 063000)
Key words: Playfair;encryption;Algorithm
随着网络的普及,信息安全日益受到关注。而密码这门古老的技术不可避免的提上日程。虽然用近代密码学的观点来看,在一战期间,被美军和英军广泛使用的Playfair加密体制很不安全,但是诸如Playfair古典密码的设计原理在编制近代密码时仍有许多借鉴之处。本文在研究了Playfair体制的加密过程后,讨论了一种改进算法。
1 playfair密码算法
该算法将明文中的双字母作为一个单元对待,并将这些单元转换为密文字母组合。替换时基于一个5*5的字母矩阵。字母矩阵的构造方法如下:采用一个关键词(密钥)依次从左到右、从上到下填入矩阵,去除重复字母,然后再将字母表中剩下字母按顺序填入,字母I,J占同一个位置。约定:表中第一列看作是最后一列的右边一列,表中的第一行看作是最后一行的下一行。对一对明文P、Q加密时,按其在矩阵中出现的位置不同分别处理如下:
(1)若P、Q在同一行上,则对应密文分别是仅靠P、Q右端的字母。(2)若P、Q在同一列上,则对应密文分别是仅靠P、Q下方的字母。(3)若P、Q不在同一行,也不在同一列上,则对应密文为以P、Q为对角顶点所确定的矩形的另两个顶点,按同行的原则对应。(4)若P=Q,则插入事先约好的字母再作处理。(5)字母数为奇数,补充事先约好的字母后再处理。
解密是加密的逆过程。
2 改进算法思想
playfair密码考虑的是双字母组合,由此,我们考虑将明文中的三字母作为一个单元对待,替换时考虑3*3*3的字母立方体。字母立方体构造方法如下:采用一个关键词(密钥)依次从上到下从左到右从前到后填入立方体的顶点、棱线中点及面中心,去除重复字母,然后再将字母表中剩下的字母按顺序填入。
对于明文三字母组合,加密时根据它们在3*3*3字母立方体中的位置分别处理如下:
(1)当三字母组合共面时(这里的面约定为立方体的六个面),取字母所在面的对称面上的对应点字母作为密文;(2)当三字母组合其中两个共面时,取两字母所在面的对称面上的对应点字母作为共面字母的密文,另一字母的密文为立方体中心对称点的字母;(3)当三字母组合可看成共两个不同面时,先出现的面优先,同时出现时按左先于右,上先于下,前先于后的顺序确认;(4)当三字母组合均不共面时,取立方体中心对称点的字母为密文;(5)若明文字母个数不为三的倍数时,则在明文的末尾增加某个事先约定的字母补充至三的倍数。
3 实验数据
我们选取了如下数据作处理,待加密的明文为this system is secure.
密钥为my cipher。
由以上算法,加密后的密文为vthz zrciso te zsapxw.
加密算法主要实现代码如下:
void search(int i,char d[26],char c[3][3][3])
//找到文对应3维矩阵的位置(下标)
{int j = 0;
int i1, i2, i3;
int x[3], y[3], z[3];
while( j < i )
{for(i1=0; i1<3; i1++)
for(i2=0; i2<3; i2++)
for(i3=0; i3<3; i3++)
if( d[j] == c[i1][i2][i3] )
{ x[0] = i1;
x[1] = i2;
x[2] = i3; }
for(i1=0; i1<3; i1++)
for(i2=0; i2<3; i2++)
for(i3=0; i3<3; i3++)
if( d[j+1] == c[i1][i2][i3] )
{y[0] = i1;
y[1] = i2;
y[2] = i3; }
for(i1=0; i1<3; i1++)
for(i2=0; i2<3; i2++)
for(i3=0; i3<3; i3++)
if( d[j+2] == c[i1][i2][i3] )
{z[0] = i1;
z[1] = i2;
z[2] = i3; }
judge(x, y, z); //判断共面情况
display(x, y, z, c); //输出(3个字符为一组)
j = j + 3; }}
4 结束语
本文讨论了一种Playfair密码体制的改进算法,将明文字母对改成三字母组合为单元加密,并给出了具体加密方法,实验数据表明,该算法效果较好。下一步,我们将对改进算法的作具体分析,以及讨论能否实现对中文的加密。
参考文献:
[1]张福泰等.密码学教程[M].武汉:武汉大学出版社,2006.
[2]杨波.现代密码学[M].北京:清华大学出版社,2003.
[3]陈鲁生等.现代密码学[M].北京:科学出版社,2002.