密码学,事实上是一门非常古老的应用,古希腊时期就已经存在了斯巴达密码棒。古典密码更依赖算法的保密性,而现代密码学则依赖于对密钥的保护。现代密码学领域中,最常用的术语是密码编码学而非密码使用学。
常见的古典密码:凯撒密码、仿射密码、维吉尼亚密码等。
对称算法:双方共享一个密钥,并使用相同的加密和解密方法,1976年以前的算法全部基于对称算法。
对称密码可以分为:
序列密码:单独地加密每一个明文位。
分组密码:使用相同的密钥加密整个明文位分组。
AES、DES
非对称/公钥算法:公钥加密、私钥解密。
具有实用性的公钥算法:
1.整数分解方案:建立在因式分解大整数的困难性的基础上
RSA:
密钥生成:
①随机选择两个大的质数:p、q(p、q绝对保密),求N=pq,r=φ(N)=(p-1)(q-1);
②选择一个整数e,要求e ③私钥:d,为e关于r的模反元素,d * e ≡ 1 mod r; 其中(N,d)为私钥;(N,e)为公钥 加密过程: 明文:m(m需要小于N) 密文:c,m^e ≡ c (mod N) 解密过程:c^d ≡ m (mod N) 2.离散对数方案:如签名算法DSA、ELGamal加密等。 3.椭圆曲线(EC)方案:ECDH、ECDSA数字签名算法。 是对密码学算法的应用。 并非一种加密算法,它计算了一个消息的摘要,这个摘要是一个非常短的、固定长度的位字符串。它在数字签名、消息验证方面起到了重要作用。



