密码学,事实上是一门非常古老的应用,古希腊时期就已经存在了斯巴达密码棒。古典密码更依赖算法的保密性,而现代密码学则依赖于对密钥的保护。现代密码学领域中,最常用的术语是密码编码学而非密码使用学。
常见的古典密码:凯撒密码、仿射密码、维吉尼亚密码等。
对称算法:
双方共享一个密钥,并使用相同的加密和解密方法,1976年以前的算法全部基于对称算法。
对称密码可以分为:
序列密码:单独地加密每一个明文位。
分组密码:使用相同的密钥加密整个明文位分组。
AES、DES
非对称/公钥算法:
公钥加密、私钥解密。
具有实用性的公钥算法:
1.整数分解方案:建立在因式分解大整数的困难性的基础上
RSA:
密钥生成:
①随机选择两个大的质数:p、q(p、q绝对保密),求N=pq,r=φ(N)=(p-1)(q-1);
②选择一个整数e,要求e<r且e与r互质;
③私钥: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数字签名算法。
密码协议:
是对密码学算法的应用。
哈希函数:
并非一种加密算法,它计算了一个消息的摘要,这个摘要是一个非常短的、固定长度的位字符串。它在数字签名、消息验证方面起到了重要作用。