日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Bech32编码 (2)原理

發(fā)布時(shí)間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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ì)算,然后是零,然后是低位。
def bech32_create_checksum(hrp, data):values = bech32_hrp_expand(hrp) + datapolymod = bech32_polymod(values + [0,0,0,0,0,0]) ^ 1return [(polymod >> 5 * (5 - i)) & 31 for i in range(6)]

2. 糾錯(cuò)

BCH 碼的特點(diǎn)之一是它們可用于糾錯(cuò):將無效輸入更改為有效輸入

  • 副作用:如果犯了多個(gè)錯(cuò)誤,則有效輸入可能不是正確輸入。
  • 對于演示,小寫通常更可取,但在二維碼中應(yīng)該使用大寫

總結(jié)

以上是生活随笔為你收集整理的Bech32编码 (2)原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。