所谓加密货币是不加密的,区块链上所有的交易内容(包括:账户的地址,转账的地址)都是公开的。
Bitcoin中主要用到密码学的中的两个功能:Hash和签名。
一 Hash
Cryptographic hash function:
1.Collision resistance
Hash碰撞其实很常见,因为输出空间是邮有限的,比如256位的Hash值,输出空间就2的256次方,但是输入空间是无限的。但是Collision resistance是指目前没有有效的方法可以通过hash值反推输入值,只能通过Brutal Force破解。如果输入空间比较大,在实际破解中,就几乎不可行了。即,具有防篡改性。
ps:MD5算法已经不具备该特性了。(已经掌握了如何人为的制造Hash碰撞了)
2.Hiding
指的是Hash的计算过程是单项的,不可逆。但是依然可以考虑使用暴力破解。
ps:实际工作中,为了防止暴力破解,会采用拼接随机数nonce后(增大输入空间),计算Hash值。
3.puzzle friendly
指的是Hash值事前是不可预测的,如果想hash落在某个范围内,只能一个个的去试。
Bitcoin中使用的hash函数是SHA-256 (secure hash Algorithm)
二 签名
需要先知道Bitcoin中的账户管理机制,去中心化,想开户就是在本地创建一对(公钥,私钥),就代表一个账户。如果需要给某个账户转10个Bitcoin,需要用自己私钥签名,对方用我的公钥解密就可以验证了。