比特币运用了密码学中两个功能:
哈希 cryptographic hash function
collision resistance:防哈希碰撞,即不同输入的哈希输出相等。通过brute force碰撞难度极高。用处:哈希作为digest,检查原信息是否被篡改。md5已可以人为制造哈希碰撞
hiding:通过输出没法知道输入,只能蛮力求解。需要输入空间足够大,且分布均匀。实际操作中在输入内容后面拼接一个nonce,一个选取的随机数,使输入足够大且均匀
两种性质结合,可以用于digital commitment。即sealed envelope,预测不可提前公开。可以先公开哈希值,出结果后只需对哈希值就可确认是否篡改
puzzle friendly:除了上述两个密码学的性质要求外,比特币还具备这个性质。哈希输出不可预测,只能暴力算。挖矿就是找nonce,使blockheader的哈希值小于等于某阈值。挖矿很难,但验证简单
比特币用的是SHA256,secure hash algorithm
签名
比特币的账户:公私钥对。非对称加密体系 asymmetric encryption algorithm。对称加密就一个密钥,密钥分发可能不安全。加密用接收方公钥,解密用接收方私钥。
公私钥用于签名,发布交易时用私钥签名,全网用他的公钥验证。
比特币生成钱包和签名采用的随机源要足够好,不然就存在产生相同公私钥对的风险
