数据加密算法有很多种,密码算法标准化是信息化社会发展得必然趋势,是世界各国保密通信领域得一个重要课题。按照发展进程来分,经历了古典密码、对称密钥密码和公开密钥密码阶段,古典密码算法有替代加密、置换加密;对称加密算法包括DES和AES;非对称加密算法包括RSA 、背包密码、McEliece密码、Rabin、椭圆曲线、EIGamal D_H等。目前在数据通信中使用最普遍的算法有DES算法、RSA算法和PGP算法、数字签名等。

一、 DES加密算法(数据加密标准)

DES是一种对二元数据进行加密的算法,数据分组长度为64位,密文分组长度也是64位,使用的密钥为64位,有效密钥长度为56位,有8位用于奇偶校验,解密时的过程和加密时相似,但密钥的顺序正好相反。

DES算法的弱点是不能提供足够的安全性,因为其密钥容量只有56位。由于这个原因,后来又提出了三重DES或3DES系统,使用3个不同的密钥对数据块进行(两次或)三次加密,该方法比进行普通加密的三次块。其强度大约和112比特的密钥强度相当。其加密过程如图所示。

DES加密算法

二、 RSA加密算法

RSA算法既能用于数据加密,也能用于数字签名,RSA的理论依据为:寻找两个大素数比较简单,而将它们的乘积分解开则异常困难。在RSA算法中,包含两个密钥,加密密钥PK,和解密密钥SK,加密密钥是公开的,其加密与解密方程为:

其中n=p×q,P∈[0,n-1],p和q均为大于10100的素数,这两个素数是保密的。

RSA算法的优点是密钥空间大,缺点是加密速度慢,如果RSA和DES结合使用,则正好弥补RSA的缺点。即DES用于明文加密,RSA用于DES密钥的加密。由于DES加密速度快,适合加密较长的报文;而RSA可解决DES密钥分配的问题。

三、 数字签名

书信或者文件是根据亲笔签名或盖章来证明其真实性。在计算机网络中传送的文件以及电子邮件通过数字签名来模拟现实中的签名的效果。数字签名必须保证以下三点:

(1) 接收者能够核实发送者对报文的签名;

(2) 发送者事后不能抵赖对报文的签名;

(3) 接收者不能伪造对报文的签名。

现在已有多种实现各种数字签名的方法。但采用公开密钥算法要比采用常规密钥算法更容易实现。实现的方式如图所示

其中数字签名和数据加密的区别如下:

数据加密:

保证数据信息传输的安全。

接受者的公钥(运算数据)。

数字签名:

证实某信息由某人发出,且没有被修改,不关心其他人是否看到该信息。

发送者的私钥(运算数据)。

小知识之数字签名简介:

数字签名(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。