为什么要密码学
密码学(Cryptography),是一门将信息进行加密处理与传递,以及分析加密信息的学科。
密码学即保密技术,是一门研究如何保证信息传输的安全技术,是数字信息及其他形式的信息如何防止未经授权的使用及访问的学科。
它基于计算机科学、数学和密码来设计安全算法,利用编码、哈希等技术来实现信息的加密、解密和摘要的处理。密码学的基本原理是:通过严格的加密、认证等安全措施,确保只有被标记允许访问的人员、设备和服务器能够拥有他们想要访问的信息,以及确认不被授权访问的信息得到限制。最主要作用是对信息进行加密和解密,以保证信息的安全
密码学有三个分支:分别是 单项散列函数、 对称加密、非对称加密
单项散列函数
单向函数(One-way Function)是正向计算容易,逆向运算困难的函数。也就是说,给定你一个输入,你很容易计算出输出;但是给定你一个输出,你却很难计算出输入是什么。
散列函数(Hash Function)是一个可以把任意大小的数据,转行成固定长度的数据的函数。 我们把转换后的数据,叫做散列值,散列值越长,存在相同散列值的概率就越小,发生碰撞的可能性就越小。
单向散列函数既是一个单向函数,也是一个散列函数。比如我们常用的校验文件是否被修改过可以通过验证md5
值 或者 sha256
值,因为同一个文件算出来的数值是一样的
每一种算法都有其理论的设计安全强度,随着计算机计算能力的提升以及未来量子时代的到来,各种加密算法会被更容易破解,所以我们要尽量选择安全强度大的加密算法。目前来说128位的安全强度还是安全的
单项散列函数基本不可能通过密文解出原文
对称加密
对称加密,对称密码,是指在加密和解密时使用同一密钥的加密方式。要求严格保管好秘钥,秘钥一旦泄露,则密文就可以解开。
常见的对称加密算法有 AES、SM4、ChaCha20、3DES、Salsa20、DES、Blowfish、IDEA、RC5、RC6、Camellia。
目前国际主流的对称加密算法是AES,国内主推的则是国标的SM4。
非对称加密
非对称加密需要两把密钥:公钥和私钥,他们是一对,如果用公钥对数据加密,那么只能用对应的私钥解密。
如果用私钥对数据加密,只能用对应的公钥进行解密。因为加密和解密用的是不同的密钥,所以称为非对称加密。
常见的非对称加密算法:RSA、DSA、ECC、ElGamal