王民明
摘 要:文章介绍了在QS-维码编解码系统中使用DES进行加密解密的方案设计与实现过程。详细阐述了DES加密算法的过程设计,介绍了DES加密算法的实现过程,对测试数据进行了分析,并以图表的方式展示了测试结果。
关键词:DES;二维码;编码;解码
目前,二维码已经广泛地被人们使用在生活中,例如移动支付、商品识别、社交通信等领域。QR=维码是一种矩阵二维码符号。信息容量大、可靠性高,可表示汉字、字母、数字、二进位数、日文等多种信息,使用方便[1]。
未经加密的二维码比较容易破解,如果在支付交易时不使用加密后的二维码,用户私密信息很容易泄露,存在安全隐患。现阶段Java开发的二维码应用已经比较成熟,但在工业领域,C语言开发的二维码应用开源代码还很难找到。为满足用户需求,我们在C语言中实现了二维码的编解码,并使用了数据加密标准(Data Encryption Standard,DES)加密方法保证数据的安全[2]。
DES是一种使用密钥加密的块算法。使用DES算法可以提供高质量的数据保护,防止数据未经授权的泄露和未被察觉的修改。DES算法具有相当高的复杂性,破译难度较大,复杂度较高,但算法本身便于理解和掌握。DES密码体制的安全性不依赖于算法,其安全性仅以加密密钥的保密为基础,算法在软件中实现方便,运行有效,应用范围广[3]。
1 DES加密过程设计
DES主要采用置换和移位运算来实现加解密。64位的明文分组X首先经过一个初始置换函数进行置换运算,产生一个7 664位的输出XO,该输出被分成两个分别为32位的左半部分LO和右半部分RO,用于F函数的16轮迭代运算的首次迭代的初始输入。
DES加密算法的密钥长度为56位,用户输入密钥64位,按8行8列从上到下从左到右地排列,其中,每行的最后一位用于奇偶校验。子密钥的获取首先将输入的64位密钥去掉最后一列,然后用密钥置换函数对剩下的56为密钥进行置换。去掉64位密钥中第8、16、24、32、40、48、56、64位。剩余的56位按密钥置换表排放。置换后,将其置换的输出再分为CO(前28位)和DO(后28位)两部分,上一轮置换得到的输出的两部分经过循环左移1位或2位后,每轮按压缩置换表进行移位,然后将两部分合并成56位,之后经过压缩置换后得到当前这轮置换的48位子密钥。
压缩置换后的输出数据的位数要比置换前输入的位数要少。在压缩置换过程中,原来的7行8列共56位数据被压缩成8行6列的48位数据。将上一轮移位后得到的两部分再按位移表进行移位,作为下一个子密钥产生的PC-2置换的输入。依次经过16次循环左移和16次置换得到16个子密钥[4]。
2 DES加密实现
程序中采用bitset数据类型存储计算数据,并将S盒和E盒置换后的所有可能二进制形式计算后依次放入静态数组以提高运算速度[5]。 DES加密实现流程如图1所示。具体实现方法如下:
void getSubKey(bitset<64》;//获取子秘钥
void getSubKey(string key);//通过字符串获取子秘钥
bitset<64>stringToBitset(string);//将字符串转化为bitset类型
bitset<64> encrypt(bitset<64>&);/加密bitset<64>块
bitset<64> decrypt(bitset<64>&);//解密bitset<64>块
void encrypt(istream&,ostream&);//通过输入流读取数据并加密
void decrypt(istream&,ostream&);//通过输入流读取数据并解密
char* encrypt3(char* content,int&size;);//加密字符串
char* decrypt3(char* content,int&size;);//解密字符串
char* charToHex(char* str);//字符串轉十六进制字符串
char* hexToChar(char* strV/十六进制字符串转字符串
char* charToHex(char* str,intmsgLen);//指定长度的字符串转十六进制
3 DES加密QS=维码测试与分析
经测试,采用DES加密二维码图片,加密解密速率和数据长度基本呈线性关系,对于正常的QS二维码应用,DES加密解密都能在较短的时间内完成,对用户体验的影响很小。
和不加密同等级QS=维码编解码对比,DES加密解密所用的时间都很短,在只增加一点点处理时间的情况下,二维码图片的安全性得到了很大的提升(见图2-3)。
[参考文献]
[1]管莹,敬茂华.DES算法原理及实现[J].电脑编程技巧与维护,2009 (4):5-7
[2]施文杰.基于PKI技术的二维码安全性研究[D]淮南:安徽理工大学,2017
[3]张彬,王岳.二维码的安全技术研究[J].信息安全与通信保密,2015 (10):110-113
[4]付延松.基于移动端的二维码防伪系统设计[D].杭州:杭州电子科技大学,2015
[5]陈侨川,李红灵.DES算法中S盒的重组方法[J]网络安全技术与应用,2015 (3):82-83