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 值的较高位输入校验和计算,然后是零,然后是低位。
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. 纠错

BCH 码的特点之一是它们可用于纠错:将无效输入更改为有效输入

  • 副作用:如果犯了多个错误,则有效输入可能不是正确输入。
  • 对于演示,小写通常更可取,但在二维码中应该使用大写

Bech32编码 (2)原理相关推荐

  1. Bech32编码 (3)隔离见证地址

    1. Bech32 编码 人类可读的部分"bc" [ 7 ]用于主网,"tb" [ 8 ]用于测试网. 数据部分值: . 1 个字符(代表 5 位数据):见证版 ...

  2. 关于base64编码的原理及实现

    我们的图片大部分都是可以转换成base64编码的data:image. 这个在将canvas保存为img的时候尤其有用.虽然除ie外,大部分现代浏览器都已经支持原生的基于base64的encode和d ...

  3. Base64的编码实现原理攻略

    Base64的编码原理 本文将实现: 简述 ASCII码字符编码的Base64 编码实现原理 简述 非ASCII码字符编码的Base64 编码实现原理 加密分析系列文章: Base64 编码实现原理( ...

  4. Base64编码/解码原理及实现

    前两天在做一个项目时,合作方的开发人员说需要用到Base64 编码.由于之前没听说过这种编码,马上上网google 了下资料,才发现Base64 编码使用得这么普遍,最常用的就是电子邮件传输编码方式. ...

  5. 算数编码的原理及C++实现

    文章目录 介绍 编码原理 三个问题 原码 问题解决 1. 结束符 2. 概率自适应 3.溢出问题 下溢(underflow) 解码 介绍 摘自Wikipedia:算术编码是一种无损数据压缩方法,也是一 ...

  6. Base64编码解码原理详解

    Base64编码解码原理详解 1. Base64字符的组成部分 Base64所用字符: 0,1,2 -.9 A,B,C,D-Z a,b,c,d-z + / 对应ASCII: 48,49-58,65,6 ...

  7. iOS RTMP 视频直播开发笔记(5)- iOS H.264 实时硬编码实现原理

    iOS RTMP 视频直播开发笔记(5)- iOS H.264 实时硬编码实现原理 网上有两个实现,GDCL – AVEncoder 和 IFVideoPicker. IFVideoPicker 使用 ...

  8. Java字符编码根本原理

    2019独角兽企业重金招聘Python工程师标准>>> Java开发中,常常会遇到乱码的问题,一旦遇到这种问题,常常就很扯蛋,每个人都不愿意承认是自己的代码有问题.其实编码问题并没有 ...

  9. Base64编码的原理与常用实现

    这篇主要是为了后面好介绍加密算法,做的铺垫. 这个是基础,什么是一个程序员的涵养,这些基础就是涵养. 平时可能用不到,但必须得会. 如果连这个原理都说不上来,就别玩王者荣耀绝地求生英雄联盟和平精英了, ...

最新文章

  1. php 读取stdclass,json - 在php中读取stdclass的问题?
  2. 如何让类数组也使用数组的方法比如:forEach()
  3. IIS网站服务器性能优化指南
  4. [攻防世界 pwn]——warmup
  5. SQL Server 2005 cmd工具的使用
  6. Linux 利用hosts.deny 防止暴力破解ssh
  7. 又涨啦!2021年6月程序员工资出炉
  8. 一张图30分钟带你入门python-大数据时代来了!神级程序员一张图帮你梳理Python脉络,快速入门...
  9. 【react】 使用react 脚手架 创建项目
  10. 张宇1000题高等数学 第十八章 多元函数积分学(一)
  11. 什么是信息安全管理体系
  12. 修改hexo的主题nexT中的Pisces主题宽度
  13. 为快乐工作而生的协同办公管理平台——IBOS!
  14. rhq监控软件_用RHQ监视怪物
  15. Sql 日期操作 获取年月日等
  16. Python与Excel——Xlwings基础操作
  17. python turtle绘制柱状图_python画柱状图
  18. 润乾报表:怎样把不同数据库的数据放到一张报表里
  19. EasyPark共享停车位的设计与实现
  20. Rust语法之if语句

热门文章

  1. 网络:TIME-WAIT
  2. 杨辉三角python语言程序思路_python杨辉三角方法的实例介绍
  3. 数据中心进行数字化转型的2019年
  4. GB50174-2017新旧对比
  5. DL之MobileNetV2:MobileNetV2算法的架构详解(包括ReLu的意义)
  6. TF学习——TF之TFOD:基于TFOD AP训练ssd_mobilenet预模型+faster_rcnn_inception_resnet_v2_模型训练过程(TensorBoard监控)全记录
  7. Matlab:Matlab中常用的函数、案例详细攻略
  8. pyhanlp 停用词与用户自定义词典
  9. MDK_main()代码执行过程分析
  10. ASP.NET查询页面设置form的action属性只弹出一个页面,并且每次将页面设置到最前...