主页 > imtoken市场打不开 > 区块链十六进制数据的编解码算法是什么

区块链十六进制数据的编解码算法是什么

imtoken市场打不开 2023-04-27 06:34:07

本文主要介绍区块链中十六进制数据编解码算法的相关知识。 内容详尽通俗易懂,操作简单快捷,具有一定的参考价值。 系统数据的编码/解码算法什么样的文章会有收获,一起来看看吧。

众所周知,计算机存储和处理二进制数据。 为了简洁起见,实际上使用最多的是二进制的变体——十六进制。 如作者姓名嘉文,中文拼音为嘉文(全部小写),电脑中存入6A696177656E。

显然,人类倾向于记住家文,其对应的十六进制代码6A696177656E是对人类记忆力的考验。 同样,人类很难记住十六进制数据,但如果是十六进制编码的文本字符串,则相对容易记忆和阅读。 以下是 ASCII 码表的一部分。

区块链16进制数据的编码/解码算法是怎样的

07在十六进制中是一个Bell(铃),如果你试图用计算机程序打印出来,结果是看不见也听不懂,只能听到铃铛声。 但字符串“07”相对容易理解和记忆。 上面说了,比特币地址都是十六进制数,不进行转换,打印是没有意义的,人类无法直观识别。

你可以想象查询你的银行账户余额的场景。 如果账户中只有77元,查询结果将打印为大写字符M(十进制代码为77)。 相信大部分用户都不知道77是什么意思。 相比之下,如果将数字77转换为文字“77”(其十六进制代码为3737)再打印出来,用户就会理解屏幕上显示的文字77。 综上所述:

区块链16进制数据的编码/解码算法是怎样的

以下部分讨论了用于表示文本中的十六进制数据的几种编码。

1.Base64

这是一种使用 64 个字符来表示任意二进制数据的方法。 通常exe、jpg、pdf等文件都是二进制文件,用文本编辑器打开都是乱码。 那么就需要一种方法将二进制数据编码成字符。 字符串格式,以便可以以文本形式打开和查看二进制文件。

所以,因为它是 BASE64,所以它是由 64 个字符编码的。 是哪 64 个字符? 请看下表:

区块链16进制数据的编码/解码算法是怎样的

Base64编码主要用于传输、存储、二进制表示等领域,也可以用于加密,但这种加密比较简单,一看就不知道是什么。 当然你也可以自定义Base64字符序列进行加密。 ,我们来看一下Base64的编码过程。

首先,既然是用上述64个字符的范围来表示,那么,要能够表示64个字符的各种组合,至少要用到6位。 根据排列组合,6位一共可以表示2的6次方组合的字符排列; 对于一个需要转换的二进制文件,可以这样处理,每组3个字节,所以一共24bit,然后可以对这24bit进行划分,分成每组6bit,这样就可以了一共分为4组。 分成4组6bit后,可以查上表找到对应的字符,这样就可以转成base64了,简单。

那么,划分一组3个字节时如果不是3的倍数怎么办? 这样最后需要用\x00个字节来补,然后在代码末尾加上1或2个=号比特币中使用的哈希算法是什么,表示加了多少字节。

由于字符+和/可能会出现在标准的Base64编码之后,它们不能直接作为URL中的参数,所以出现了另一种“url安全”的base64编码,它实际上将字符+和/分别变成了-和_。

根据这个原理,其实这个编码思想还是比较容易理解的,同时也可以看出这个编码是可以逆向的。 以字符串“yes”为例,它的Base64编码为eWVz,你可以自己用几个例子试试。

2.Base58

顾名思义,Base58 基于 58 个字母和数字。 有了Base64的基础,我们就更容易理解Base58了。 事实上,它是 Base64 的一个子集。 与Base64相比,Base58不包含以下Base64字符:

可以看出小写o和大写O容易和数字0混淆,小写l和大写I容易和数字1混淆,Base58是Base64去除了几个容易混淆的字符和/和+容易引起转义. Base58的编码表如下:

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

必须注意的是,不同的应用实现使用的编码表内容是一样的,只是顺序可能不同,例如:

1)比特币地址:123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

2)瑞波地址:rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz

接下来我们来看一下Base58Check。 比特币使用改进版的 Base58 算法。 为了解决Base58编码的字符串没有完整性校验机制的问题。 在传播过程中,如果某些字符损坏或丢失,则无法检测到,因此使用改进版算法Base58Check。

3.Base58校验

在二进制数据传输过程中,为了防止数据传输错误,保护数据安全,通常会加入校验码。 通过校验码的配合,可以发现数据是否损坏,发送时是否输入错误。 Base58Check就是Base58加上校验码,也可以说是Base58的一种编码形式。 在比特币系统中生成钱包地址时使用这种编码形式。

我们知道钱包地址是用来转账的。 虽然Base58编码已经可以避免一些容易混淆的字符,但是仍然不能保证用户的错误输入或者地址信息在传输过程中会因为某种原因而被破坏。 这会给用户带来潜在的损失风险。

Base58Check的编码方式如下: 在编码前,在待编码的内容字符串中加入一个字节的版本信息。 版本信息可自行约定。 包含在编码内容字符串的哈希值中,通常只需要获取哈希值中的4个字节,将它们相加,然后整体进行Base58编码即可。

在生成比特币地址的过程中,版本字节放在头部,4字节的哈希值放在末尾,然后编码生成。 原理很简单。 哈希算法具有检测数据完整性的先天能力。 这里我们看到哈希算法的另一个应用。

如果编码后的数据在传输过程中被损坏或篡改比特币中使用的哈希算法是什么,接收方在获取数据后会对原始数据进行相同的校验码计算,并与接收结果中的校验码进行比较。 由于哈希算法的特点,只要原始数据有任何变化,计算出的哈希值就会发生变化,所以只要校验码不一致,就说明数据不合法。

《区块链十六进制数据的编码/解码算法是什么》这篇文章的内容就介绍到这里,感谢阅读! 相信大家对“区块链中十六进制数据的编码/解码算法是什么?”都有一定的了解。 想要了解更多知识,请关注易速云行业资讯频道。