加密和解密
在加密和解密的过程中,如果采用的加密密钥与解密密钥相同,或者从一个很容易计算出另一个,则这种方法叫作对称密钥密码体制,也叫作单钥密码体制。反之,如果加密和解密的密钥并不相同,或者从一个很难计算出另外一个,就叫作不对称密钥密码系统或者公开密钥密码体制,也叫作双钥密码体制。
对称密钥加密算法
对称密钥加密算法有多种,例如,DES(Data Encryption Standard,数据加密标准)、 IDEA(International Data Encryption Algorithm,国际数据加密算法)、Skipjack、3DES、GDES、 New DES、Lucifer、FEAL N、LOKI 91、RC4、RC5 等。
1.DES 算法
DES 算法的过程,简单来说,就是把要加密的明文分成 64 位的数据段作为输入,再使用根据 64 位密钥变化生成的 52 个子密钥,对输入的数据段依次进行初始置换、16 轮 迭代、逆初始置换,然后得到 64 位密文。
DES 的解密过程与加密过程几乎相同,只是子密钥的使用顺序不一样。加密时依次使用的部分参数 K1 K2 K3 …K16,在解密时则按照 K16 K15 K14 …K1 顺序使用。其他算法完全一样,这也是 DES 容易使用的一个方面。
2.IDEA 算法
IDEA 在加密运算中所处理的数据段大小也是 64 位,但是所用的密钥长度为 128 位,而且采用更加复杂的加密算法,目的是保证它不会被轻易破译。另外,IDEA 实现非常方便,既可以通过软件实现,也可以通过硬件实现。
IDEA 算法对数据的处理是以 64 位为单位的,在加密前把要加密的明文按每 64 位作为一个数据段进行分割然后分别加密。
IDEA 的解密过程与加密过程基本相同,所不同的就是解密子密钥的产生方式与加密子密钥的产生方式不一样,解密的其他运算过程同加密一样,也是把 64 位数据段分成 4 个 16 位的数据段,然后经过八轮迭代变换和一轮输出变换,就可以得到对应的明文结果。
不对称秘钥加密算法
公开密钥加密方法中,要想达到良好的加密效果,算法上必须做到:在计算上产生密钥非常容易;已知公钥的情况下对明文加密在计算上很容易实现;已知私钥的情况下对密文解密在计算上很容易实现;尽管用于加密和解密的两个密钥在数学上是相关的,但是在已知公钥的情况下,要想求得私钥在计算上不可行;已知公钥和密文的情况下,要想求得明文在计算上不可行。只有做到以上几点,才能有效地防止攻击者对算法的破译。
不对称密钥加密算法有多种,例如,RSA、ECC、背包密码、McEliece、Diffe Hellman、Rabin、Ong Fiat Shamir、零知识证明的算法、椭圆曲线、EIGamal 等。
RSA 的加密原理
它是第一个既能用于数据加密也能用于数字签名的算法。
1.RSA 加密过程
首先把需要加密的明文按比特位分成等长的数据段,使得每个数据段对应的十进制数小于 N,即数据段的长度小于 log2N。然后依次对每个明文数据段 m 做加密运算可以得到密文 c∶c = me mod N。
相应的,解密时对密文数据段做解密运算就可以得到明文 m∶m = ce mod N。
2.RSA 数字签名
RSA 加密算法不仅可以用于信息的加密,而且还可以用于发送者的身份验证或数字签名。例如,用户 B 要向 A 发送一个信息 m,而且要让 A 确信该信息就是 B 本人发出的。为此,B 用自己的私钥 SK = (N,d)对信息加密得到密文 c∶c = md mod N,然后把 c 发送给 A。A 收到密文后,使用 B 的公钥 PK = (N,e)对密文进行解密