Bech32编码 (2)原理
生活随笔
收集整理的這篇文章主要介紹了
Bech32编码 (2)原理
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1. 產(chǎn)生
1.1 ben32編碼
字符串最多有 90 個(gè)字符長
part1: 人類可讀HRP human-readable part,標(biāo)識數(shù)據(jù)的類型或某種意義。
. 必須包含 1 到 83 個(gè) US-ASCII 字符,每個(gè)字符的值在 [33-126] 范圍內(nèi)。
. HRP 的有效性對于有的應(yīng)用程序會嚴(yán)格限制。
part2: 分割符,始終是“1”
part3:data數(shù)據(jù)
- 至少長6個(gè)字符
- 只包含字母數(shù)字字符(地址中只包含0-9,az)
- 不包括“1”,“B”,“I”,和“o”
1.2 ben32校驗(yàn)
由bech32_verify_checksum函數(shù)驗(yàn)證
def bech32_polymod(values):GEN = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3]chk = 1for v in values:b = (chk >> 25)chk = (chk & 0x1ffffff) << 5 ^ vfor i in range(5):chk ^= GEN[i] if ((b >> i) & 1) else 0return chkdef bech32_hrp_expand(s):return [ord(x) >> 5 for x in s] + [0] + [ord(x) & 31 for x in s]def bech32_verify_checksum(hrp, data):return bech32_polymod(bech32_hrp_expand(hrp) + data) == 1- 最多影響 4 個(gè)字符的任何錯(cuò)誤, 并且未能檢測到更多錯(cuò)誤的可能性不到 1e9分之一
- 人類可讀部分的處理方法是首先將每個(gè)字符的 US-ASCII 值的較高位輸入校驗(yàn)和計(jì)算,然后是零,然后是低位。
2. 糾錯(cuò)
BCH 碼的特點(diǎn)之一是它們可用于糾錯(cuò):將無效輸入更改為有效輸入
- 副作用:如果犯了多個(gè)錯(cuò)誤,則有效輸入可能不是正確輸入。
- 對于演示,小寫通常更可取,但在二維碼中應(yīng)該使用大寫
總結(jié)
以上是生活随笔為你收集整理的Bech32编码 (2)原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Bech32编码 (1)产生背景
- 下一篇: Bech32编码 (3)隔离见证地址