基于加密和解密的二维条形码的实现

时间:2022-10-07 13:07:53 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。


基于加密和解密的二维条形码的实现

摘要 本文介绍了基本的条码知识及一些数据加密与解密的算法,阐述了二维条码的相关概念、特点、分类、及其应用前景。重点在于二维条码的加密与解密的实现。具体阐述了RSA算法的原理,并附有源程序说明其加密和解密方法。



关键词 二维条码;RSA算法;加密;解密

1 二维条码的简介

1.1 二维条码的概念

二维条码/二维码 (2-dimensional bar code) 是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息,在代码编制上利用构成计算机内部逻辑基础的“0”“1”比特流,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理。具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时,还具有对不同行的信息自动识别功能、及处理图形旋转变化等特点。



二维条码/二维码能够在横向和纵向两个方位同时表达信息,因此能在很小的面积内表达大量的信息。



1.2 二维条码/二维码的特点

1)高密度编码,信息容量大,可容纳多达1 850个大写字母或2 710个数字或1 108个字节,500多个汉字,比普通条码信息容量约高几十倍;



2)编码范围广。该条码可以把图片、声音、文字、签字、指纹等可以数字化的信息进行编码,用条码表示出来;可以表示多种语言文字;可表示图像数据;



3)容错能力强,具有纠错功能。这使得二维条码因穿孔、污损等引起局部损坏,照样可以正确得到识读,损毁面积达50%仍可恢复信息;



4)译码可靠性高。它比普通条码译码错误率百万分之二要低得多,误码率不超过千万分之一;



5)可引入加密措施,保密性、防伪性好;

6)成本低,易制作,持久耐用;




7)条码符号形状、尺寸大小比例可变;

8)二维条码可以使用激光或CCD阅读器识读。

1.3 二维条码/二维码的分类

二维条码/二维码可以分为堆叠式/行排式二维条码和矩阵式二维条码。堆叠/行排式二维条码形态上是由多行短截的一维条码堆叠而成;矩阵式二维条码以矩阵的形式组成,在矩阵相应元素位置上用表示二进制“1”, 表示二进”0”,的排列组成代码。



1.3.1 堆叠式/行排式二维条码

堆叠式/行排式二维条码(又称堆积式二维条码或层排式二维条码),其编码原理是建立在一维条码基础之上,按需要堆积成二行或多行。它在编码设计、校验原理、识读方式等方面继承了一维条码的一些特点,识读设备与条码印刷与一维条码技术兼容。但由于行数的增加,需要对行进行判定,其译码算法与软件也不完全相同于一维条码。有代表性的行排式二维条码有:Code 16KCode 49PDF417等。



1.3.2 矩阵式二维码

矩阵式二维条码(又称棋盘式二维条码)它是在一个矩形空间通过黑、白像素在矩阵中的不同分布进行编码。在矩阵相应元素位置上,用点(方点、圆点或其他形状)的出现表示二进制“1”,点的不出现表示二进制的“0”,点的排列组合确定了矩阵式二维条码所代表的意义。矩阵式二维条码是建立在计算机图像处理技术、组合编码原理等基础上的一种新型图形符号自动识读处理码制。具有代表性的矩阵式二维条码有:Code OneMaxi CodeQR Code Data Matrix等。



2 RSA算法

现在网络上、银行系统、军事情报等许多领域用处非常广泛的加密算法。算法于1977年由美国麻省理工学mit(massachusetts institute of technology)ronal rivest,adi shamirlen adleman3位年轻教授提出,3人的姓氏rivest,shamiradlernan命名为RSA算法。该算法利用了数论领域中合数无法高效分解为两个固定质数的理论原理。与diffie-hellman算法相比,RSA算法无须收发双方同时参与加密过程,且非常适合于电子函件系统的加密。



2.1 RSA算法

1)密钥配制。假设m是想要传送的报文,现任选两个很大的质数pq,使得:n = p * q (2-1);



选择正整数e,使得e(p-1)(q-1)互质;这里(p-1)(q-1)表示二者相乘。再利用




辗转相除法,求得d,使得:e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) )(2-2);



其中x mod y是整数求余运算,其结果是x整除以y求得的m即为对应于密c的明文。



2.2 RSA公共密钥加密算法的核心是欧拉(euler)函数ψ

对于正整数n,ψ(n)定义为小于n且与n互质的正整数的个数。例如,ψ(6) = 2,这是因为小于6且与6互质的数有15共两个数;再如ψ(7) = 6,这是因为互质数有1,2,3,5,66个。



欧拉在公元前300多年就发现了ψ函数的一个十分有趣的性质,那就是对于任意小于n且与n互质的正整数m,总有mψ(n) mod n = 1例如,5ψ(6) mod 6 = 52 mod 6= 25 mod 6 =1。也就是说,在对n求余的运算下,ψ(n)指数具有周期性。



n很小时,计算ψ(n)使用穷举法即可求出;但当n很大时,计算ψ(n)就十分困难了,其运算量与判断n是否为质数的情况相当。不过在特殊情况下,利用ψ函数的两个性质,可以极大地减少运算量。



性质2.2.1:如果p是质数,ψ(p) = (p-1)

性质2.2.2:如果pq均为质数,ψ(p·q) = ψ(p)·ψ(q) = (p-1)(q-1)

RSA算法正是注意到这两条性质来设计公共密钥加密系统的,pq的乘积n可以作为公共密钥公布出来,n的因子pq则包含在专用密钥中,可以用来解密。如果解密需要用到ψ(n),收信方由于知道因子pq,可以方便地算出ψ(n) = (p-1)(q-1)。如果窃听者窃得了n,但由于不知道它的因子pq,则很难求出ψ(n)这时,窃听者要么强行算出ψ(n),要么对n进行因数分解求得pq。因此,窃密者很难成功。



2.3RSA算法的工作原理:

1)密钥配制。设m是要加密的信息,任选两个大质数pq;选择正整数e,使eψ(n) = (p-1)(q-1)互质。



利用辗转相除法,计算d,使得ed mod ψ(n) = 1,ed = kψ(n) +1,其中k为某一正整数。




本文来源:https://www.wddqw.com/doc/9af78596c47da26925c52cc58bd63186bceb920b.html