密码学是计算机中比较基础的学科,真正完全搞明白背后的原理,需要深厚的数学功底,涉及到的学科知识包括:高等数学、线性代数、概率论、抽象代数、数论等知识。
感兴趣的同学可以就这个主题进行深入研究。对于一般的应用者,我们核心是先要知道好一些基本的密码学算法,然后重点掌握算法的应用场景,边界以及一些常见问题下密码学的运用。
密码学基本知识
密码,最初的目的是用于对信息加密,计算机领域的密码技术种类繁多。但随着密码学的运用,密码还被用于身份认证、防止否认等功能上。
最基本的,是信息加解密分为对称加密(Sysmmetric Cryptography)和非对称加密(Public-Key Cryptography,Asymmetric Cryptography),这两者的区别是是否使用了相同的密钥。
除了信息的加解密,还有用于确认数据完整性(Integrity)的单向散列(One-Way Hash Function)技术,又称密码检验(Cryptographic Checksum)、指纹 (Fingerprint)、消息摘要 (Message Digest)。
信息的加解密与信息的单向散列的区别是,对称与非对称加密是可以通过密钥解出明文,而单向散列是不可逆的。信息的加解密,密文必定是不定长的,而单向散列可以是定长的。
结合密码学的加解密技术和单向散列技术,又有了用于防止篡改的消息认证码技术&#x