Bech32编码 (2)原理
生活随笔
收集整理的這篇文章主要介紹了
Bech32编码 (2)原理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 產生
1.1 ben32編碼
字符串最多有 90 個字符長
part1: 人類可讀HRP human-readable part,標識數據的類型或某種意義。
. 必須包含 1 到 83 個 US-ASCII 字符,每個字符的值在 [33-126] 范圍內。
. HRP 的有效性對于有的應用程序會嚴格限制。
part2: 分割符,始終是“1”
part3:data數據
- 至少長6個字符
- 只包含字母數字字符(地址中只包含0-9,az)
- 不包括“1”,“B”,“I”,和“o”
1.2 ben32校驗
由bech32_verify_checksum函數驗證
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 個字符的任何錯誤, 并且未能檢測到更多錯誤的可能性不到 1e9分之一
- 人類可讀部分的處理方法是首先將每個字符的 US-ASCII 值的較高位輸入校驗和計算,然后是零,然后是低位。
2. 糾錯
BCH 碼的特點之一是它們可用于糾錯:將無效輸入更改為有效輸入
- 副作用:如果犯了多個錯誤,則有效輸入可能不是正確輸入。
- 對于演示,小寫通常更可取,但在二維碼中應該使用大寫
總結
以上是生活随笔為你收集整理的Bech32编码 (2)原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Bech32编码 (1)产生背景
- 下一篇: Bech32编码 (3)隔离见证地址