今天开始研究加密算法,sha256, 同一个密码,每次经过计算得出不同hash值,但这些hash值回过来总是这个密码,如果知道倒推公式就可以得出所有密码。数据库就是采用这个算法保存密码,这些开发人员肯定都知道倒推算法,就是在那个倒推函数里,那开发人员是否都可以根据hash值得出密码呢?同样比特币加密是否也是这样呢
我可以给你举个最简单的hash函数,把字符串所有的ascii码排列后除17取余数, 举个栗子, 100/17=5 余 15, 这个15就是hash值,光给你个15,但是你能推倒出原来的字串是100么?不能。
这个就是经典的取模环群的hash函数, 当然都是用质数来保证proper群且cyclic的特性, 当然不能用来做密码啥的,因为碰撞太简单了。。。一般多用来java class里来做hasHash函数而已。
另外hash不是加密。。。
比特币用的是大质数分解,即 m^e=encrypted, encrypted^d=m, e是质数-1的模倒数,因为质数分解是无法被计算出来的,所以这2个质数是私钥,其积是公钥,当然实现上要复杂的多。比特币是用公钥验证你的矿石不是真的,然后将其连接上他人的区块。