主页 > imtoken是什么平台 > 【链圈知识】比特币密钥

【链圈知识】比特币密钥

imtoken是什么平台 2023-07-09 05:18:48

比特币的安全性由现代密码学提供。

比特币的所有权是通过数字密钥、比特币地址和数字签名建立的。 数字密钥实际上并不存储在网络上,而是由用户生成并存储在称为钱包的文件或简单数据库中。 存储在用户钱包中的数字密钥完全独立于比特币协议,可以由用户的钱包软件生成和管理,无需区块链或网络连接。 密钥使比特币的许多有趣特性成为可能,包括去中心化信任和控制、所有权认证以及基于加密证明的安全模型。

每笔比特币交易都需要将有效签名存储在区块链上。 只有有效的数字密钥才能产生有效的数字签名,因此拥有比特币密钥的副本可以让您控制帐户的比特币。 密钥成对出现,由私钥和公钥组成。 公钥就像银行的帐号,私钥就像控制帐户的 PIN 或支票上的签名。 比特币用户很少直接看到数字密钥。 通常,它们存储在钱包文件中,由比特币钱包软件管理。

比特币地址实际上是由公钥转换而来,而公钥实际上是由私钥转换而来,所以实际上一切的来源都是随机生成的私钥。 比特币地址是通过一种单向加密哈希算法从公钥中获得的。 哈希算法是一种单向函数,它接收任意长度的输入以生成指纹摘要。

怎么生成比特币地址_比特币生成器_比特币李笑比特币身价

从公钥生成比特币地址的过程

在比特币交易的支付环节中比特币生成器,收款人的公钥由其数字指纹表示,称为比特币地址,就像支票上支付对象(即“收款人”)的姓名一样。 一般来说,比特币地址是由公钥生成并对应的。 但是,并非所有比特币地址都是公钥; 它们还可以表示其他支付对象,例如脚本。 这样,比特币地址抽象了收款人,使得交易的目的地更加灵活,就像支票一样:这种支付工具可以支付到个人账户、公司账户,用于账单支付或现金支付。 比特币地址是用户始终看到的密钥的唯一表示,他们只需要将比特币地址告诉其他人即可。

私钥和公钥

比特币包含一系列密钥对,每个密钥对包含一个公钥和一个私钥。 私钥是一个随机数,私钥通过椭圆曲线算法生成公钥,公钥通过单向加密哈希函数生成比特币地址。 比特币采用非对称加密,使得签名只能由私钥生成,每个人都可以在不泄露私钥的情况下验证签名p。 私钥和公钥可以无一例外地编码成各种格式,以方便身份识别和钱包操作。

比特币李笑比特币身价_怎么生成比特币地址_比特币生成器

私钥

私钥可以理解为一个随机数。 比特币地址中资金的控制取决于对应私钥的控制。 在比特币交易中,私钥用于生成支付比特币所必需的签名,以证明资金的所有权。

选择一个随机源(熵源),生成比特币私钥本质上与“选择一个介于 1 和 22562256 之间的数字”是一样的。 建议使用加密安全伪随机数生成器 (CSPRNG),并且需要来自具有足够熵的源的种子。

公钥

私钥可以通过椭圆曲线算法生成公钥,这是一个不可逆的过程:K(公钥)= k(私钥)* G(常数点)。 它的反向运算,称为“求离散对数”——知道公钥 K 来求私钥 k——是极其困难的。

椭圆曲线算法

比特币生成器_怎么生成比特币地址_比特币李笑比特币身价

椭圆曲线密码学是一种基于离散对数问题的非对称(或公钥)加密方法,可以用椭圆曲线上的加点或乘点来表示。

第1步:

通过操作系统随机数生成器产生一个随机数,并进行SHA256哈希运算(结果必须是1到n-1之间的任意数,n=1.158 * 1077)

这个数字是私钥的原始内容,所以需要从加密安全的随机源中选择一串随机字节来防止暴力破解

使用SHA256哈希运算是为了方便生成一个固定长度为256位的数,用十六进制表示如下: 6954ac6d0402d7239f1cc150da224d0ef08fd1226f245f06fe4d6d68accfce8a

第2步:

如果使用压缩公钥,私钥结果加0x01; 如果您使用非压缩公钥,请不要附加 0x01

私钥的后缀01用于告诉钱包私钥对应的公钥和地址是压缩格式还是非压缩格式。

原因是同一个私钥的压缩公钥和非压缩公钥是不同的,生成的地址也是完全不同的,也就是说一个私钥对应两个公钥和两个地址钥匙。 如果没有身份证明,钱包私钥与公钥和地址之间就没有一一对应关系。

本次使用的压缩格式示例:6954ac6d0402d7239f1cc150da224d0ef08fd1226f245f06fe4d6d68accfce8a01

第 3 步:

对私钥进行base58check编码,即转为WIF(Wallet Import Format)格式

(1)在私钥前加一个版本前缀,0x80为WIF前缀806954ac6d0402d7239f1cc150da224d0ef08fd1226f245f06fe4d6d68accfce8a01

(2) 对上述结果进行双SHA256运算,将前四个字节作为校验码拼接在末尾,再进行base58编码得到私钥的最终形式(结果的前缀非WIF压缩格式的结果为5,WIF压缩格式的结果以K或L为前缀)

KzkTe43L5cbSX64txJMcsFvJC6vov7nYaGdYicz5N8Mds4ThN2XM

第四步:

使用secp256k1椭圆曲线算法将私钥转换为公钥(Gx,Gy)

椭圆曲线算法是一种基于离散对数问题的非对称加密方法。 它的数学运算是单向的,因此私钥可以转换为公钥比特币生成器,但公钥不能转换回私钥。 将以上结果转换后,得到如下结果(十六进制): (0ba1ba3b8d8f7bd4a70828ec0e749dd26ee4cdd18d058c880afa121fad60e5b6,

f2ee1b72d9b9a57706e5de72acc1378f92269086c4964c073593bf92d28c647d)

第 5 步:

将公钥合并成十六进制数

压缩公钥可以大大节省公钥占用的空间(减少256bits),这是目前比特币客户端的默认格式,也兼容非压缩公钥

未压缩(前缀04,拼接Gx,Gy)

040ba1ba3b8d8f7bd4a70828ec0e749dd26ee4cdd18d058c880afa121fad60e5b6f2ee1b72d9b9a57706e5de72acc1378f92269086c4964c073593bf92d28c647d

压缩(y为偶数前缀02,y为奇数前缀03,只保留Gx,Gy可以通过Gx计算)030ba1ba3b8d8f7bd4a70828ec0e749dd26ee4cdd18d058c880afa121fad60e5b6

第 6 步:

将公钥转换为比特币地址

(1)RIPEMD160(SHA256(public key))得到一个20-byte/160-bit的public key hash。 使用两个Hash函数进行转换最大的好处是,如果其中一个函数被破解了,安全性还是可以得到保证的。

(2)对公钥哈希(版本前缀+公钥哈希+SHA256(SHA256(版本前缀+公钥哈希)))进行Base58check编码并对前4个字节进行Base58编码,这里是P2PKH地址,前缀为0x00,最终的比特币地址如下:

17FjrmErg5a39P7UsyYCchpyzSnq9gmMuJ