从零到一学懂区块链:密钥

从零到一学懂区块链,每天get新知识。这个系列以概念普及、名词解释为主,帮助小白迅速入门,同时也是自己的学习笔记。可能做不到日更,但一定持续输出。


上篇文章学习了地址这个概念,说白了就是一串字符串,没想起来的朋友可以戳链接回顾:从零到一学懂区块链(3):地址。今天要来学习密钥。

01

什么是密钥

密钥是密码学中输入的一种用来在明文和密文之间转换的参数。说到密钥不可避免地要说起对称和非对称加密算法,对称加密算法是加密和解密使用同一种规则;非对称加密算法是加密解密使用不同的规则。在区块链中,普遍使用非对称加密算法。在非对称加密算法中,密钥由私钥和公钥组成,公钥公开,私钥保密,怎么保密都行。密钥在钱包内存储,由钱包管理。


私钥是一串随机产生的数字,类似银行卡的密码。

公钥是由私钥经过椭圆曲线加密算法生成的一串数字。类似银行卡的账号。


对称加密可以这样理解,甲先用公钥A(比如甲想了个数字3作为公钥)对数据M(4)进行加密,得到加密后的数据X=F(A,M),(比如12=3X4),A(3)是公开的,也知道了X(12)的值,然后甲告诉乙加密规则F(就是乘法啊)是如何进行的,乙毫无疑问地反推一下就知道M是什么了。对称加密的加密和解密用的是一套规则。


非对称加密可以这样理解,甲先用公钥A对数据M进行加密,得到加密后的数据X=F(A,M),A是公开的,也知道了X的值,但甲不告诉乙加密规则F,且这个过程就是很复杂,反正你就算知道了A和X也无法算出M(因为你不知道规则啊,在对称加密算法中,乙知道12是用乘法算出来的,在非对称加密算法中,鬼知道12是9+3,还是36/3,总之有很多啦。)此时乙必须用另一个私钥B来解密才能得到M=F(B,X)。非对称加密就是使用两套规则。当然现实中的加密算法远比你想象中的难。

02

如何得到密钥

1、私钥由一个随机数生成,只要确保这个数够随机,就可以生成私钥,一般从操作系统底层的一个密码学安全的随机源中取出一个256位的随机数。

2、私钥经过椭圆曲线加密算法(ECC)可以生成65字节的公钥。

3、公钥经过一个很复杂的哈希运算就可以生成地址了。

又要上这张老图(图片来源:《精通比特币》)

未来已来,

只是尚未流行。

区块链

03

密钥有什么用

拥有密钥是使用比特币的唯一条件。其中公钥用于接收比特币,私钥用于比特币支付时的交易签名。密钥在交易中起着至关重要的作用。在一次交易中,A转账给B,首先要用A自己的私钥对信息进行加密,证明这个转账是A发起的,这一过程又叫数字签名,接着再用B的公钥对信息进行二次加密,确保只有B能解开这条信息、接收转账,反过来,B要接收这个信息,首先要用B的私钥对信息进行解密得到A签名后的加密信息,接着再用A的公钥验证这条信息。


©著作权归作者所有:来自51CTO博客作者mb5fe18f5282239的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 讲道理,MD5 到底是不是加密算法?
  2. 恶意 Python 库偷 SSH 密钥!请自查是否中招
  3. 算法科普:神秘的 DES 加密算法
  4. java中的对称加密算法
  5. 常用对称加密算法(DES/AES)类(PHP)
  6. 检索InnoDB组合密钥表的最后插入ID
  7. 在Python中解析Yaml:检测重复的密钥
  8. ssh 免密码登录 与 密钥公钥原理讲解
  9. java 对称加密——密钥与加密后的数据存盘方式

随机推荐

  1. 简单使用的ASP.NET验证码实例代码
  2. C#开发微信门户及应用(五)之用户分组信息
  3. 详细介绍ASP.NET Core静态文件的使用教程
  4. C#开发微信门户及应用(四)之关注用户列表
  5. 如何限制所有HTTP请求是POST方式?
  6. C#开发微信门户及应用(三)之文本消息和图
  7. C#开发微信门户及应用(二)之微信消息处理
  8. ASP.NET MVC重写的实例教程
  9. Asp.Net中Session失效是怎么解决的?
  10. MVC实现下拉框联动的实例详解