比特币中的密码学原理
文章目录
- Hash
- 签名
Hash
防止数据被篡改,可以通过比较hash值。hash由输入的字符串为任意大小,输出固定长度字符。理论上无法避免存在hash碰撞(不同输入,产生相同输出),因为输入是无限的,输出是有限的,但实际应用无法高效地制造hash碰撞,可以从工程上忽略hash碰撞。
三个特性
- 抗碰撞性(collision resistance):工程上可认为不会出现hash碰撞的,即唯一输入对应唯一输出
- 隐藏性(hiding):哈希函数的计算过程是单向的,不可逆的
- 不可预测性(puzzle friendly-比特币中要求性质):计算满足要求的hash值只能通过大量的尝试作为proof of work,没有捷径。
哈希算法主要有MD4、MD5、SHA
MD4 1990年 输出128位 (已经不安全)
MD5 1991年 输出128位 (已经不安全)
SHA-0 1993年 输出160位 (发布之后很快就被NSA撤回,是SHA-1的前身)
SHA-1 1995年 输出160位 (已经不安全)
SHA-2包括SHA-224、SHA-256、SHA-384,和 SHA-512,分别输出224、256、384、512位。 (目前安全)
不安全指可人为地进行hash碰撞
签名
非对称加密算法:拥有公钥(public key)、私钥(private key),私钥加密公钥解密,在比特币中每个钱包账号对应一对公私钥。私钥用来签名,公钥用于验证签名。
hash和签名可同时使用,一般先进行hash再用私钥进行签名。
还没有评论,来说两句吧...