针对网络传输的特点,我们提出了一个将二叉树与RSA相结合的加密方法。即先用RSA方法加密密钥矩阵,然后用二叉树的遍历产生的不同密钥数据矩阵对数据进行加密。

一、 RSA加密算法简介

RSA加密算法是基于这样一个数论事实:将两个大素数相乘十分容易,但要分解它们的乘积却极端困难。RSA的算法简单表示如下:

(1)选取两个大素数P和Q。计算N=PxQ,N是公开的;φ(n)=(P—1)(Q-1),φ(n)是保密的。

(2)任意选取整数e,使得gcd(e,φ(n))=1,计算d使得exd=l modφ(n)。

(3)加密公式:C=MemodNo解密公式:M=Cd mod No其中C表示密文,M表示明文。

RSA方法使用两个密钥,一个是公共密钥,另一个为私有密钥,a如用其中一个密钥对某信息加密,则可以用另一个密钥对该密文解密。 RSA的缺点主要有:

A)产生密钥很麻烦,受到素数产生技术的限制。

B)分组长度太大,使运算代价很高,尤其是速度较慢;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。

因此,可以让RSA做加密算法的初始化工作。本算法就是让RSA产生加密的密钥矩阵。用密钥矩阵来具体实施大量数据的加密工作。

二、加密算法

(1)首先产生两个大素数P,Q。并使得:N=PxQ,根据公式gcd(e,φ(n))=1(其中φ(n)=(P-1)(Q-1),得到(e,N>;由公式:exd=l modφ(n))得到<d,N)。(e,N>、(d,N>表示数据序列。F=(P-1)(Q-1)。产生密钥数据矩阵A,A为KxM阶,其中K)得到<d,N)。(e,N>、(d,N>表示数据序列o F=(P-1)(Q-1)。

(2)产生密钥数据矩阵A,A为KxM阶,其中K>2,M>0;且A中任意两元素不相同,Aij都为r字节。并在加密端利用RSA算法对矩阵A进行加密操作,产生新的密钥矩阵A’,并发送给解密端。加密公式为:Aij,=(Aij)emd.No此公式中符号表示求余数。并用A生成二叉树B。

(3)在解密端利用公式Aij=(Aij')d modN得到原始矩阵Ao用A生成二叉树B。

(4)数据加密时在加密端,从任意结点遍历,得到新矩阵Aij",并得到Aij中所有元素在A中的位置,即得到K和M,使得A:; =Akni。取出一组数据DATA,DA’雅为S×r阶矩阵形式(2<S<K,2<T<M)q若S<K或者T<朋,则缺少的位用0补。即DATA=SXT,直到DATA转换成K×M阶DA-TA';然后取AijXORDA TA7,XOR表示取异或;再用DA TA各的任意n位与DATA;cu互补的8r-n位组成新的DA.TA”,用DATA'd余下的位与DA TA7删余下的位组成新的DATA。完成了取出数据的加密,并把加密过的数据发送到解密端。此步骤既实现了混淆,又实现了扩散,这两个在加密过程中的基本原则。

(5)重复步骤(3),步骤(4)进行加密。当完成二叉树遍历,就重新生成密钥数据矩阵A,并重复步骤(3),步骤(4)即可完成大批量数据的加密。

解密端的解密算法是加密算法的逆算法。

小知识之RSA

RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。