Cryptocurrency uses blockchain to record transactions between entities.When users send and receive a given number of cryptocurrencies,these transactions will be V+(cc13422088639) broadcast on P2P networks.Other entities monitor these transactions,combine them into a”block”at regular intervals,and then broadcast the new block to the network after calculating the workload proof.
这些利用的风行哈希函数算法有:
md5:2^128 个值(找一个抵触键,须要哈希大概 2^64 个值)
sha-1:2^160 个值(找一个抵触键,须要大概 2^80 个值)
Java 字符串的 hashCode() 就是一个哈希算法,它的输出是任意字符串,输入是固定的 4 字节 int 整数:
“hello”.hashCode(); // 0x5e918d2
“hello, java”.hashCode(); // 0x7a9d88e8
“hello, bob”.hashCode(); // 0xa0dbae2f
两个雷同的字符串永远会计算出雷同的 hashCode,否则基于 hashCode 定位的 HashMap 就无奈失常工作。这也是为什么当咱们自定义一个 class 时,覆写 equals() 办法时咱们必须正确覆写 hashCode() 办法。
哈希碰撞
哈希碰撞是指,两个不同的输出失去了雷同的输入:
“AaAaAa”.hashCode(); // 0x7460e8c0
“BBAaBB”.hashCode(); // 0x7460e8c0
The most important feature of hash algorithm is:
The same input must be get the same output;
Different input large probability to get different output.
Hash algorithm is the purpose of to test whether the raw data been tampered with, hash game development V hkkf5566 docking, the rules of the game can be customized.
不能猜想输入是指,输出的任意一个 bit 的变动会造成输入齐全不同,这样就很难从输入反推输出(只能依附暴力穷举)。假如一种哈希算法有如下法则:
hashA(“java001”) = “123456”
hashA(“java002”) = “123457”
hashA(“java003”) = “123458”
那么很容易从输入 123459 反推输出,这种哈希算法就不平安。平安的哈希算法从输入是看不出任何法则的:
hashB(“java001”) = “123456”
hashB(“java002”) = “580271”
hashB(“java003”) = ???
There are children’s shoes will ask: collision can avoid? The answer is not. Collision will occur, because of the output byte length is fixed, the String of hashCode () output is 4 bytes integer, only up to 4294967296 kinds of output, but the input data length is not fixed, there are numerous kinds of input. So hash algorithm is an infinite input set mapped to a limited output set, will inevitably produce collision.
Collision is not terrible, we worry about is not the collision, but the probability of collision, because of the discretion of the collision probability is related to the security of hashing algorithm. A secure hash algorithm must be satisfied:
0