这篇文章主要介绍一些密码学的密钥以及HASH算法的一些基本知识。
密钥
密钥分为对称密钥和非对称密钥。对称密钥就是加密文件的密钥和解密文件的密钥是同一个,而非对称密钥是由一对密钥组成,分为公钥和私钥,可以用一把密钥去加密,用另一把密钥去解密。下面用两张图简单地说下两个密钥加解密的区别。
对称密钥的算法一般有以下几种:DES,3DES,AES等。
非对称的有RSA,ECC。
两者的对比如下:
Hash算法
Hash算法在密码学中主要用于产生消息摘要和签名。简单地说,我们在密码学中用到的功能就是利用hash算法将大块的数据(例如 60MB,600MB),生成一段很短的消息摘要。它之所以被在这些方面,因为其有一下特性:
1. 不可逆向性。这个特性就是说如果你对一个文件进行一次hash运算的出来一个消息摘要,
你想利用这个消息摘要将原文恢复出来是几乎不可能的事情。
2. 正向速度快。这个理解起来简单,就是HASH运算,生成消息摘要的速度比较快。
3. 输入敏感。如果原文有很小的改动,运算结果就会有很大的不同。
4. 输出长度确定。输入的长度不一定,但是输出的长度是一致的。
在现实的应用中,我们通常会对生成的消息摘要进行签名,在验证的过程过,会利用公钥对签名进行解密。同时我们会再次利用hash算法对原来的image内容进行运算,将运算结果与公钥解密得到的消息摘要的结果进行比对,以此验证我们签名的有效性。
HASH算法生成的长度是固定的下表是常用的算法以及得到的消息摘要的长度: