有的时候哈希函数和加密算法我们容易混为一谈,因为哈希函数经常出现在加密场合,那在这里区分一下。
我们以公钥加密为例,对于加密来讲分为两方面,如果A想要给B发一条私密消息,那么A需要用B的公钥加密消息发给B,因为A不想人让别人看到消息内容,若A拿自己的私钥,则所有人都可以看到,而这个是加密的另一个方面数字签名,
即A想给B发一个消息,并且要让B知道这个消息就是A发给他的,那么A要用自己的私钥加密"名字"给这个加密消息做一个sign,B收到消息后,首先用A的公钥把sign解密之后发现是A的"名字",知道这个消息一定是A发送的,然后用自己的私钥把消息解密就得到了A给他的私信。
这是加密算法的所用,是双向的,加密后可以解密
而哈希函数是单向的,即哈希函数对一个消息"加密"后,无法"解密",那我们用它来干嘛,
比如,我们加密时的私钥,一般加密是私钥是很长的一种二进制,但是我们时不回去记几百位的二进制的,所以 就用哈希函数把我们常用的不同长度的符号组合变换成需要的二进制,比如有的人常用123456作为私钥(密码),所以我们只需要记住这个私钥,以后需要的时候通过哈希函数把123456转换成如百位的二进制(当然这个是通过机器来计算的),所以说哈希函数有自己应用的场景,当然我们可以找一个加密算法把123456加密成需要的片段,但是加密算法总是有对应的解密算法的,这个是我们私钥不需要的,所以采用单向的哈希函数。
所以总结来说:加密算法是对消息进行加密,或者给消息加一个sign;哈希函数是用来产生单向的固定长度片段,这种片段是不需要恢复原来元素的。