论文部分内容阅读
摘要:分析数据加密技术中的置换算法及其加密解密指导思想,给出加密解密置换算法的程序设计方法与具体实现步骤,并提供一个完整的加密解密算法的C++源程序。
关键词:C++语言;加密;置换算法;移位
中图分类号:TP391
虽然已有多种技术可应用到计算机系统和网络的安全性,然而近几年来,国内外针对数据安全方面的研究比较注重在两个方面,首先是以密码学为基础的各种应用性加密措施(如公开密钥算法和保密密钥算法);其次是以计算机网络(尤其对象是以Intranet以及Internet)通信安全研究。数据加密技术仍然是在保障网络通信安全方面所依赖的主要技术。最基本的加密方法只有两种,即置换法和易位法,其它实现方法主要都是基于以上两种方法所构成的。为配合信息安全或网络安全的应用和实践,使用户更好地理解和掌握信息加密原理,本设计主要通过分析部分应用的置换算法,给出了该算法的程序具体实现步骤和设计方法,并提供一个比较完整的加密解密的C++源程序例子。
文件加密的原理:以二进制的形式,对要加密的文件逐个字符进行读取;按照新的编码原则,对原有的字符进行编码,形成的新的字符便是加密后的文件的内容。
1系统的基本要求
本文通过程序,将已有文件进行加密。其中要求加密方式不止一种,也就是说,运行程序后,提供给使用者不同的选择。用户可以根据自己的需求,选择相应的功能,就可以得到不同的结果。同时,也要将加密或解密后的程序予以保存。原文件和需要保存的文件路径由使用着自己确定。
算法描述
本文总共介绍三种比较简单而具有代表性的算法:
(1)单表移位算法;
(2)多表移位算法;
(3)置换算法。
其功能是将某一已知文件的数据(仅于英文字母)以字符形式读出,根据密钥或密码(用户通过键盘输入)将对应字符数据进行相应加密并输出结果。
2算法
2.1算法设计思想
实现加密置换算法一般是使用计算机程序编程,第一要设计良好密码源文件,建立密码源文件的方法与建立一般结构性文件的方法相似,这里假定已经设计好密码字典文件(提供的源程序中也有建立密码源文件数据的功能),文件名为“dictionary.dat”,密码源文件为了便于用户保存,可保存在可移动磁盘(如移动硬盘),加密解密时可将其插入磁盘驱动器(如移动硬盘驱动器)中。
2.2单表移位算法
单表移位算法是明文的一个字符用相应代替另一个密文字符。加密过程就是从明文字母表一一映射到密文字母表的。
该方法是通过将英文字a到z循环右移三位后,形成d、e、f、…、a、b、e字符序列,然后把移位后的序列中的字母去分别替换未被移位序列中所对应位置的字母,即利用g置换e,用f置换c等等。
随后出现的凯撒算法是移动K位[2]。然而单一移动K位的置换算法还是相当容易被破译的,进行映像是较好的置换算法,如表1所示,将上行的源字符在无规则地映像到下行的密码字符,利用表1上行源码字符逐一对应下行密码字符,可将明文译为密文,如将明文information加密后变为密文ofygkdqzogf,将明文computer加密后变为密文egdhxztk。
表1
源码 … a b c v w x y z … 1 2 6 …
密码 … q w e c v b n m … 0 9 / …
单表代替密码比较简单,因此很容易破译的。因为它没有把明文的不同字母的出现频率掩盖起来。但可以用于统计攻击次数。
2.3多表移位算法
多表代替密码有多个单字母密钥,每一个密钥被用来加密一个明文字母。第一个密钥加密明文的第一个字符数据,第二个密钥加密明文的第二个字符数据等等。密码的周期就是在所有的密钥用完后,密钥又再循环使用,若有40个单个字符密钥,那么每隔40个字符的明文都被同一密钥加密。
人们在单一恺撒密码的基础上扩展出多表密码,称为“维吉尼亚”密码。
假如以上面第一行代表明文字母,左面第一列代表密钥字母,对如下明文加密:
TO BE OR NOT TO BE THAT IS THE QUESTION
当选定RELATIONS作为密钥时,加密过程是:明文一个字母为T,第一个密钥字母为R,因此可以找到在R行中代替T的为K,依此类推,得出对应关系如下:
密钥:RELAT IONSR ELATI ONSRE LATIO NSREL
明文:TOBEO RNOTT OBETH ATIST HEQUE STION
密文:KSMEH ZBBLK SMEMP OGAJX SEJCS FLZSY
历史上以维吉尼亚密表为基础又演变出很多种加密方法,其基本元素无非是密表与密钥,并一直沿用到二战以后的初级电子密码机上。
2.4置换算法(行列换位法)
置换算法是是不改变明文字符前提下,只把字符在明文中的排列顺序改变,从而实现明文信息的加密,也叫换位密码。
置换法比较与发电报类似,人们在发电报时把发报人所写的每一个文字转换成一个四位的数字代码发出,然后在接收电报时把接收到四位数字码译成汉文字记录送给收报人。两者的差异是电报码为公开的,而置换法的转换码为秘密的,加解密双方协定的。因此,建立一个转换码的密码源代码文件(即通常所说的密码本)是解决问题的关键,即每一个分量存放两个字符,一是源代码字符,二是密码字符。如表1可以用作某一密码源文件的一部分模块。
3程序设计:
3.1主函数
3.1.1主函数主要完成的功能包括
(1)提供给使用者选择界面;
(2)根据使用者的选择,执行不同功能。
函数中首先要对自定义函数进行声明。运行该函数,显示出程序能够完成的加密与解密功能,并提供给使用者自行选择的空间。使用者根据系统提示,选择相应的功能后,通过选择语句,执行相应的函数模块,以满足用户的要求。
3.2加密部分
加密部分是整个程序关键部分,对文件的加密过程要在这里完成。该部分包括三种不同的自定义函数:单表移位算法、多表移位算法以及置换算法。虽然是三个不同的函数,但总体思想是一致的。
3.3算法模块的区分以及实现(方框图表示)
图1单表移位算法方框图 图2单表移位算法流程
图3单表移位算法方框图 图4置换算法方框图
图5置换算法方框图图6置换算法方框图
4程序适用平台
本程序适用于VC++平台,将某一字符(英文字符)进行加密处理,根据用户实际应用需求,选择适当需求的加密算法进行加密处理。
5结论
本文通过C++语言具体实现加密算法,探讨了英文字符的加密问题,同时该算法能扩展到更多文字字符的加解密,另一方面来说这加解密问题的实现会复杂一点。
密码学是在编码与破译的斗争实践中逐步发展起来的,并随着先进科学技术的应用,已成为一门综合性的尖端技术科学。它与语言学、数学、电子学、声学、信息论、计算机科学等有着广泛而密切的联系。它的现实研究成果,特别是各国政府现用的密码编制及破译手段都具有高度的机密性。
目前加密算法已被广泛的应用,随着计算机和Internet的普及,随着数字化和信息化社会的发展,密码学必将在经济交流、国家安全、网络安全及人民生活等方面发挥更大作用。
参考文献:
[1]WADE TRAPPE,LAWRENCE C WASHINGTON.密码学概论[M].北京:人民邮电出版社,2004.
[2]范辉,谢青松.操作系统原理与实训教程[M].第2版.北京:高等教育出版社,2006.
[3]黄明.21世纪进阶辅导C语言程序设计[M].大连:大连理工大学出版社,2005.
[4]马靖善.C语言程序设计[M].北京:清华大学出版社,2005.
[5]张毅坤.C语言程序设计教程[M].西安:西安交通大学出版社,2003.
作者简介:谭小展(1969.9-),男,广东省清远市人,广州市黄埔区教师进修学校,教师,中学一级教师,理学学士,研究方向:计算机应用。
关键词:C++语言;加密;置换算法;移位
中图分类号:TP391
虽然已有多种技术可应用到计算机系统和网络的安全性,然而近几年来,国内外针对数据安全方面的研究比较注重在两个方面,首先是以密码学为基础的各种应用性加密措施(如公开密钥算法和保密密钥算法);其次是以计算机网络(尤其对象是以Intranet以及Internet)通信安全研究。数据加密技术仍然是在保障网络通信安全方面所依赖的主要技术。最基本的加密方法只有两种,即置换法和易位法,其它实现方法主要都是基于以上两种方法所构成的。为配合信息安全或网络安全的应用和实践,使用户更好地理解和掌握信息加密原理,本设计主要通过分析部分应用的置换算法,给出了该算法的程序具体实现步骤和设计方法,并提供一个比较完整的加密解密的C++源程序例子。
文件加密的原理:以二进制的形式,对要加密的文件逐个字符进行读取;按照新的编码原则,对原有的字符进行编码,形成的新的字符便是加密后的文件的内容。
1系统的基本要求
本文通过程序,将已有文件进行加密。其中要求加密方式不止一种,也就是说,运行程序后,提供给使用者不同的选择。用户可以根据自己的需求,选择相应的功能,就可以得到不同的结果。同时,也要将加密或解密后的程序予以保存。原文件和需要保存的文件路径由使用着自己确定。
算法描述
本文总共介绍三种比较简单而具有代表性的算法:
(1)单表移位算法;
(2)多表移位算法;
(3)置换算法。
其功能是将某一已知文件的数据(仅于英文字母)以字符形式读出,根据密钥或密码(用户通过键盘输入)将对应字符数据进行相应加密并输出结果。
2算法
2.1算法设计思想
实现加密置换算法一般是使用计算机程序编程,第一要设计良好密码源文件,建立密码源文件的方法与建立一般结构性文件的方法相似,这里假定已经设计好密码字典文件(提供的源程序中也有建立密码源文件数据的功能),文件名为“dictionary.dat”,密码源文件为了便于用户保存,可保存在可移动磁盘(如移动硬盘),加密解密时可将其插入磁盘驱动器(如移动硬盘驱动器)中。
2.2单表移位算法
单表移位算法是明文的一个字符用相应代替另一个密文字符。加密过程就是从明文字母表一一映射到密文字母表的。
该方法是通过将英文字a到z循环右移三位后,形成d、e、f、…、a、b、e字符序列,然后把移位后的序列中的字母去分别替换未被移位序列中所对应位置的字母,即利用g置换e,用f置换c等等。
随后出现的凯撒算法是移动K位[2]。然而单一移动K位的置换算法还是相当容易被破译的,进行映像是较好的置换算法,如表1所示,将上行的源字符在无规则地映像到下行的密码字符,利用表1上行源码字符逐一对应下行密码字符,可将明文译为密文,如将明文information加密后变为密文ofygkdqzogf,将明文computer加密后变为密文egdhxztk。
表1
源码 … a b c v w x y z … 1 2 6 …
密码 … q w e c v b n m … 0 9 / …
单表代替密码比较简单,因此很容易破译的。因为它没有把明文的不同字母的出现频率掩盖起来。但可以用于统计攻击次数。
2.3多表移位算法
多表代替密码有多个单字母密钥,每一个密钥被用来加密一个明文字母。第一个密钥加密明文的第一个字符数据,第二个密钥加密明文的第二个字符数据等等。密码的周期就是在所有的密钥用完后,密钥又再循环使用,若有40个单个字符密钥,那么每隔40个字符的明文都被同一密钥加密。
人们在单一恺撒密码的基础上扩展出多表密码,称为“维吉尼亚”密码。
假如以上面第一行代表明文字母,左面第一列代表密钥字母,对如下明文加密:
TO BE OR NOT TO BE THAT IS THE QUESTION
当选定RELATIONS作为密钥时,加密过程是:明文一个字母为T,第一个密钥字母为R,因此可以找到在R行中代替T的为K,依此类推,得出对应关系如下:
密钥:RELAT IONSR ELATI ONSRE LATIO NSREL
明文:TOBEO RNOTT OBETH ATIST HEQUE STION
密文:KSMEH ZBBLK SMEMP OGAJX SEJCS FLZSY
历史上以维吉尼亚密表为基础又演变出很多种加密方法,其基本元素无非是密表与密钥,并一直沿用到二战以后的初级电子密码机上。
2.4置换算法(行列换位法)
置换算法是是不改变明文字符前提下,只把字符在明文中的排列顺序改变,从而实现明文信息的加密,也叫换位密码。
置换法比较与发电报类似,人们在发电报时把发报人所写的每一个文字转换成一个四位的数字代码发出,然后在接收电报时把接收到四位数字码译成汉文字记录送给收报人。两者的差异是电报码为公开的,而置换法的转换码为秘密的,加解密双方协定的。因此,建立一个转换码的密码源代码文件(即通常所说的密码本)是解决问题的关键,即每一个分量存放两个字符,一是源代码字符,二是密码字符。如表1可以用作某一密码源文件的一部分模块。
3程序设计:
3.1主函数
3.1.1主函数主要完成的功能包括
(1)提供给使用者选择界面;
(2)根据使用者的选择,执行不同功能。
函数中首先要对自定义函数进行声明。运行该函数,显示出程序能够完成的加密与解密功能,并提供给使用者自行选择的空间。使用者根据系统提示,选择相应的功能后,通过选择语句,执行相应的函数模块,以满足用户的要求。
3.2加密部分
加密部分是整个程序关键部分,对文件的加密过程要在这里完成。该部分包括三种不同的自定义函数:单表移位算法、多表移位算法以及置换算法。虽然是三个不同的函数,但总体思想是一致的。
3.3算法模块的区分以及实现(方框图表示)
图1单表移位算法方框图 图2单表移位算法流程
图3单表移位算法方框图 图4置换算法方框图
图5置换算法方框图图6置换算法方框图
4程序适用平台
本程序适用于VC++平台,将某一字符(英文字符)进行加密处理,根据用户实际应用需求,选择适当需求的加密算法进行加密处理。
5结论
本文通过C++语言具体实现加密算法,探讨了英文字符的加密问题,同时该算法能扩展到更多文字字符的加解密,另一方面来说这加解密问题的实现会复杂一点。
密码学是在编码与破译的斗争实践中逐步发展起来的,并随着先进科学技术的应用,已成为一门综合性的尖端技术科学。它与语言学、数学、电子学、声学、信息论、计算机科学等有着广泛而密切的联系。它的现实研究成果,特别是各国政府现用的密码编制及破译手段都具有高度的机密性。
目前加密算法已被广泛的应用,随着计算机和Internet的普及,随着数字化和信息化社会的发展,密码学必将在经济交流、国家安全、网络安全及人民生活等方面发挥更大作用。
参考文献:
[1]WADE TRAPPE,LAWRENCE C WASHINGTON.密码学概论[M].北京:人民邮电出版社,2004.
[2]范辉,谢青松.操作系统原理与实训教程[M].第2版.北京:高等教育出版社,2006.
[3]黄明.21世纪进阶辅导C语言程序设计[M].大连:大连理工大学出版社,2005.
[4]马靖善.C语言程序设计[M].北京:清华大学出版社,2005.
[5]张毅坤.C语言程序设计教程[M].西安:西安交通大学出版社,2003.
作者简介:谭小展(1969.9-),男,广东省清远市人,广州市黄埔区教师进修学校,教师,中学一级教师,理学学士,研究方向:计算机应用。