1. 对称算法
加解密使用一个密钥
有四种加密模式:电子密码本模式(ECB)、加密块链模式(CBC)、加密反馈模式(CFB)、输出反馈模式(OFB)
2. 摘要算法
消息摘要算法是不可逆。
常用的“消息摘要”算法有: MD2、MD4、MD5、SHA、SHA-1/256/383/512等。
常用的摘要算法主要有MD5和SHA1。MD5的输出结果为16字节,sha1的输出结果为20字节。
3. 公钥算法
加解密使用不同的密钥。公钥加密,私钥解密。
常用的算法有:RSA、DSA、DH和ECC
a. RSA 它的安全性是基于大整数素因子分解的困难性。
大多数使用公钥密码进行加密和数字签名的产品和标准使用的都是RSA算法。
算法:
1. 选择2个质数p、q;
2. n = p * q ;
3. 欧拉函数Φ(n) = (p - 1)(q - 1)
4. 选择整数e,使e与Φ(n)互质,且1 < e < Φ(n)
5. 计算d,使d * e = 1 mod Φ(n)
其中,公钥KU={e, n}, 私钥 KR = { d, n }。
b. DSA 只用做数字签名 安全性基于解离散对数的困难性
DSA签名算法中用到了以下参数:
p是L位长的素数,其中L从512到1024且是64的倍数。
q是160位长且与p-1互素的因子 ,其中h是小于p-1并且满足 大于1的任意数。
x是小于q的数。
算法使用一个单向散列函数H(m)。
标准指定了安全散列算法(SHA)。三个参数p,q和g是公开的,且可以被网络中所有的用户公有。
私人密钥是x,公开密钥是y。
对消息m签名时:
(1) 发送者产生一个小于q的随机数k。
(2) 发送者产生: r和s就是发送者的签名,发送者将它们发送给接受者。
(3) 接受者通过计算来验证签名:
如果v=r,则签名有效。
c. Diffie-Hellman密钥交换
实质是一个通信双方进行的密钥协定,安全性基于有限域上计算离散对数的困难性。
d. 椭圆曲线密码机制( ECC )
椭圆曲线的数量乘是这样定义的:设E为域K上的椭圆曲线,G为E上的一点,
这个点被一个正整数k相乘的乘法定义为 k个G相加,因而有
kG = G + G + … + G (共有k个G)
若存在椭圆曲线上的另一点N ≠ G,满足方程kG = N。
容易看出,给定k和G,计算N相对容易。而给定N和G,计算k = logG N相对困难。这就是椭圆曲线离散对数问题。
4. 回调函数