在区块链中使用了很多加密学算法,包括哈希算法、默克树、数字签名等。
(一) 哈希算法
哈希算法是一种常见的单向加密算法,它将一串数据加密生成一串二进制,但不能由二进制还原为原来的数据。该算法有一下特点:
· 相同的输入得到相同的二进制串
· 不同对输入得到不同的二进制串,即有强对抗性,不同的数据不会产生相同的哈希值
· 输出的二进制长度是一致的
Python演示代码:
import hashlib
data1 = "Test1"
msg = hashlib.sha256()
msg.update(data1.encode("utf-8"))
output1 = msg.hexdigest()
print("Data1 first hash:"+output1)
# 再次计算
msg = hashlib.sha256()
msg.update(data1.encode("utf-8"))
output2 = msg.hexdigest()
print("Data1 second hash:"+output1)
if (output1 == output2):
print("Data1 first hash equals Data1 second hash!")
# 使用不同的数据
data2 = "Test2"
msg = hashlib.sha256()
msg.update(data2.encode("utf-8"))
output3 = msg.hexdigest()
print("Data2 first hash:"+output3)
if (output1 == output3):
print("Data1 hash equals Data2 hash!")
else:
print("Data1 hash does not equal Data2 hash!")
演示结果:
Data1 first hash:8a863b145dc6e4ed7ac41c08f7536c476ebac7509e028ed2b49f8bd5a3562b9f
Data1 second hash:8a863b145dc6e4ed7ac41c08f7536c476ebac7509e028ed2b49f8bd5a3562b9f
Data1 first hash equals Data1 second hash!
Data2 first hash:32e6e1e134f9cc8f14b05925667c118d19244aebce442d6fecd2ac38cdc97649
Data1 hash does not equal Data2 hash!