简单加密技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
简单加密技术
【摘要】本文首先在引言中介绍了数据加密的一些相关背景,其次在数据加密方法中简要介绍了数据加密的对称加密(传统加密算法)和非对称加密(基于公钥加密算法)的实现方法及各自优点缺点。最后在编写新的算法中本人结合传统加密算法用C语言实现自己提出的一个算法。
【关键词】加密算法密钥传统加密算法加密强度公钥加密算法
【引言】在信息时代,信息可以帮助团体或个人,使他们受益,同样,信息也可以用来对他们构成威胁,造成破坏。在竞争激烈的大公司中,工业间谍经常会获取对方的情报。密码技术是保护信息安全的主要手段之一。密码技术世界和数学,计算机科学,电子与通信等诸多学科于一身的交叉学科。他不仅具有信息加密功能,而且具有数字签名,身份验证,秘密分存,系统安全等功能。所以使用密码技术不仅可以保证信息的机密性,而且可以保证信息的完整信和正确性,防止信息被篡改,伪造或假冒。随着我国愈来愈现代化,使用密码的频率会愈来愈多,这就促使了数据加密技术的发展。
【内容】
(一)。数据加密方法
1.传统加密算法
传统的加密算法主要分为两大类:替代密码和换位密码。替代密码使用一组密文字母代替一组明文字母以隐藏明文,但保持明文字母的位置不便。替代密码又可细分为单表替代密码(凯撒密码)和多表替代密码(费杰尔算法)。换位密码是采用移位法进行加密的。他把明文的字母重新排列,本身不变,但位置变了。换位密码又可细分为列换位法和矩阵换位法。
传统加密的好处就是加密模型是稳定的,是人们所共知的,从而适用于各个行业的加密。但由于数据加密解密技术的快速发展,破解技术的不断发展和计算机整体性能的不断提升,破解传统加密已经很快了。所以传统加密算法已不能满足通信的需要,但传统加密奠定的历史基础是务须质疑的,并且在过去带来了很大帮助。
传统加密算法发展的趋势是和公钥加密算法结合,达到既有对称加密算法的优势由有公钥加密算法的优势。
2.公钥加密算法
(1)与传统加密体系不同之处是公钥加密体系理论基础是非对称加密算法。非对称加密体系的特点是加密和解密使用不同的密钥,每个用户保存着一对密钥:公开密钥PK和秘密密钥SK。这对密钥中的任何一把都可作为公开密钥PK通过非保密方式向他人公开,而另一把则作为秘密密钥SK加以保存。公开密钥用于对机密性的加密,秘密密钥则用于对加密信息的解密。秘密密钥只能由生成密钥对的用户掌握,公开密钥可广泛发布,但它只对应于生成该密钥的用户。
(2)其基本过程是:用户A生成一对密钥并将其中的一把作为公开密钥向其他用户公开;得到该公开密钥的用户B使用该密钥对机密信息进行加密后再发送给用户A;用户A再用自己保存的秘密密钥对加密后的信息进行解密。用户A只能用其秘密密钥解密由其公开密
钥加密后的任何信息。
(3)RSA算法是非对称加密领域内最为著名的算法,但是它存在的主要问题是算法的运算速度较慢。其次,它存在着公开密钥的分发问题。因此,在实际的应用中通常不采用这一算法对信息量大的信息(如大的EDI交易)进行加密。当加密量大时,公开密钥加密算法通常用于对对称加密方法密钥的加密。
(4)公钥加密算法的优点是加密强度大,但加密过程复杂,故不能实现数据的完全加密,企盼以后随着计算机性能的提升,公钥加密算法会有更进一步的发展和应用。
举一个例子:假定现在要加密一些数据使用密钥‘jordan’。利用RSA公钥,使用RSA 算法加密这个密钥‘jordan’,并把它放在要加密的数据的前面,然后,使用对称加密算法加密正文,使用的密钥就是‘jordan’。当对方收到时,解密程序找到加密过的密钥,并利用RSA私钥解密出来,然后再确定出数据的开始位置,利用密钥‘jordan’来解密数据。这样就使得一个可靠的经过高效加密的数据安全地传输和解密。
(二)。编写新的算法
由于本人所学编程知识和数学推力证明基础有限,故采用把传统加密方法中的循环移位密码方法,多表替代密码和矩阵换位法这三种方法结合起来而成的一个算法,由于这三个算法已经由前人用数学方法证明过了,我只是简单的把三种算法结合起来,故加密强度可以得到保证。下面详细介绍这个算法。
在本算法中,明文先经过单表替代再经过费杰尔算法,最后经过矩阵变换算法得到最后的密文。由于是三个算法结合,并且用到的密码都是同一密码,所以在第一步密码的作用就是密码长度作为第一步加密的密钥K,即F(x)=(x-‘A’+k)mod26+’A’循环移位密码。并且密钥的长度作为矩阵换位中列的个数。
例如有一明文abcdef,密钥是joy。所以经过第一步密钥是3位得到k=3即明文所对应的字母都相对向后移3位。即abcdef-->defghi完成第一步的加密,在费杰尔算法中,joyjoy 相对应defghi。根据费解尔算法得到密文MSDPVG再经过第三步矩阵换位法,joy-->MSD-->PVG得到MPSUDG完成整个加密过程。
由于本加密算法是结合传统加密算法的几种算法而成,所以在实现上相对较于简单,不必再向想新的编程算法,直接套用以前有的算法即可,但我本人认为的难点是字符串数组的调用上,特别是矩阵换位法中对于字符串的操作复杂,很容易乱。由于每个独立的算法都需要调用字符串数组并完成修改,如果每个算法都提供单独的字符串数组,这样在编程应用起来就会相当复杂,而且冗余,执行编译起来会遇到麻烦,所以我就源代码结合算法和字符串的应用讲解一下。结合一个实际例子。
加密的明文:my name is wwl 注:由于设计的加密算法未涉及到空格和标点等所以应该是一个字母挨着一个字母的明文,为了便于查看。
密钥:jam
1.初始数组
char plaintext[80]; /*过程输入输出调用的字符串*/
char ciphertext[80]; /*过程进行中处理的字符串*/
char key[26]; /*密钥*/
char martx[80][26]; /*定义二维数组来表示矩阵*/
采用四个数组plaintext[80]数组是过程输入输出调用的字符串,是算法间接口的字符串,每个算法执行前都要从这个字符串里提取要操作的字符串,在处理过程中调用ciphertext[80]数组。经过处理后再把结果输出回到plaintext[80]这个字符串。key[26]作为存放密钥的字符串数组,martx[80][26]定义了一个二维数组来表示矩阵换位算法。
2.strupr(key) ;