区块链基础知识笔记(3) -- 数字签名和公私钥

数字签名
数字签名相当于现实中纸质签名,为了证明某件事确实是经过我确认的,并留下证据以供验证。

在说数字签名之前,需要了解一个概念,非对称加密。在现实生活中,如果我和A希望秘密通信,及时通信内容被截获,外人也无法得知我们说的什么,最简单的方法是将信息加密。举个栗子,我和A事先约定好,通信的内容都加1,如果我想告诉A的内容是123,那么我发过去的内容是234。A在收到内容后,对每个数字减1,便得到真实内容。这个1就是我们之间的密钥,这种加密方式叫对称加密,加密和解密的密钥相同。

非对称加密指的加密和解密的密钥不同。还是以123为例,我在发送信息时,用密钥X加密123,得到的密文假设为AABBCC,解密则需要密钥Y来解密,用密钥X无法解密。如果密钥X只有我知道,密钥Y大家都知道,那么X
就称为私钥,Y称为公钥,反之亦然。此时,如果我把消息用X加密后,任何人都可以解密,此时加密可以作为一种身份认证方式,因为X这个私钥只有我有,任何经过X加密的信息,都只能用我公开的公钥Y来解密,可以认定某条信息确实是我发的,这就是数字签名。如果信息用公钥Y加密,那就是加密传输信息,只有我能看到解密后的内容。

数字签名的方法如下:
- (sk, pk) = generateKeys(keysize) generateKeys方法把key的长度作为输入,生成一对公钥(pk)和私钥(sk)。
- sig := sign(sk, message) 签名过程是把一段消息和私钥作为输入,消息的输出则是签名结果
- isValid := verfy(pk, message, sig) 验证过程是把一段消息,签名消息和公钥作为输入,如果返回真,签名属实,否则签名错误

椭圆曲线数字签名算法
比特币中使用的随机签名算法是椭圆曲线数字签名算法,使用椭圆曲线数字签名算法的一个前提条件是需要良好的随机源来提供随机数

公钥就是身份象征
如果有一条消息的签名被公钥pk正确验证,那么可以认为pk就是在表达这条消息,你真的可以认为公钥就是参与者或者系统中的一方,他可以通过签署声明来发布声明。公钥就代表着你在比特币系统中的身份。

正因为如此,你可以通过随机签名算法生成任意对公私钥作为你的身份,人们只会验证你的身份确实是pk的哈希,信息能通过你的pk来验证,并不用关心你真正是谁,如果一段脚本在执行着这些操作,那么你的交易对象很可能都不是人,而是电脑。这就是去中心化的身份管理方式。

简单介绍了一下数字签名和公私钥,希望对大家能有帮助
有兴趣的朋友可以加群讨论,一起学习 701477586

参考资料
《区块链技术驱动金融》

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值