Base32加密算法

一、什么是Base32

Base32编码是使用32个可打印字符(字母A-Z和数字2-7)对任意字节数据进行编码的方案,编码后的字符串不用区分大小写并排除了容易混淆的字符,可以方便地由人类使用并由计算机处理。

二、Base32算法原理

Base32将任意字符串按照字节进行切分,并将每个字节对应的二进制值(不足8比特高位补0)串联起来,按照5比特一组进行切分,并将每组二进制值转换成十进制来对应32个可打印字符中的一个。

由于数据的二进制传输是按照8比特一组进行(即一个字节),因此Base32按5比特切分的二进制数据必须是40比特的倍数(5和8的最小公倍数)。例如输入单字节字符“%”,它对应的二进制值是“100101”,前面补两个0变成“00100101”(二进制值不足8比特的都要在高位加0直到8比特),从左侧开始按照5比特切分成两组:“00100”和“101”,后一组不足5比特,则在末尾填充0直到5比特,变成“00100”和“10100”,这两组二进制数分别转换成十进制数,通过上述表格即可找到其对应的可打印字符“E”和“U”,但是这里只用到两组共10比特,还差30比特达到40比特,按照5比特一组还需6组,则在末尾填充6个“=”。填充“=”符号的作用是方便一些程序的标准化运行,大多数情况下不添加也无关紧要,而且,在URL中使用时必须去掉“=”符号。

三、较Base16和Base64的优缺点

与Base64相比,Base32具有许多优点:

  • 适合不区分大小写的文件系统,更利于人类口语交流或记忆。
  • 结果可以用作文件名,因为它不包含路径分隔符 “/”等符号。
  • 排除了视觉上容易混淆的字符,因此可以准确的人工录入。(例如,RFC4648符号集忽略了数字“1”、“8”和“0”,因为它们可能与字母“I”,“B”和“O”混淆)。
  • 排除填充符号“=”的结果可以包含在URL中,而不编码任何字符。

Base32也比Base16有优势:

  • Base32比Base16占用的空间更小。(1000比特数据Base32需要200个字符,而Base16则为250个字符)

Base32的缺点:

  • Base32比Base64多占用大约20%的空间。因为Base32使用8个ASCII字符去编码原数据中的5个字节数据,而Base64是使用4个ASCII字符去编码原数据中的3个字节数据。

密码系列-Base32相关推荐

  1. 十分钟快速掌握 Base 64 | Java JS 密码系列

    Java 密码系列 - Java 和 JS Base 64 Base 64 不属于密码技术,仅是编码方式.但由于在 Java.JavaScript.区块链等出现的频率较高,故在本系列文章中首先分享 B ...

  2. Java 密码系列 - Java 和 JS Base 64

    Base 64 不属于密码技术,仅是编码方式.但由于在 Java.JavaScript.区块链等出现的频率较高,故在本系列文章中首先分享 Base 64 编码技术.前面部分主要介绍 Base 64 理 ...

  3. 编码系列--Base32编码

    0.写在前面 这里讨论的编码主要的目的是将不可显示的二进制数组转变为可显示的字符串,包括其逆运算.通过特定的协议传输数据,或者加密解密的时候都会用到类似的方法. 在这类运算中用的比较多的是Base64 ...

  4. 带妹妹学密码系列三 ——分组密码(二)

    在分组密码(一)(分组密码(一))中介绍了分组密码的基础知识,在该章节中,我将介绍具体的密码方案,希望通过具体方案的学习,对分组密码有更深的认识.对于使用到的基础知识,在该章不再累述,有需要的朋友请看 ...

  5. 有趣的密码学介绍~古典密码之凯撒密码来咯~

    游说万乘苦不早,著鞭跨马涉远道.仰天大笑出门去,我辈岂是蓬蒿人! 文章目录 前言 正文 古典密码 一.古典密码概述介绍 1.置换密码 2.代换密码 二.古典密码分类介绍 1.置换密码 2.编辑本段代换 ...

  6. 网络安全专栏——修改电脑密码修改虚拟机密码(图文)

    步骤 系列文章 前言 1.net user获得本机所有电脑用户 2.获得本次登陆的用户名 3.修改指定用户的密码 系列文章 提示:转到网络安全专栏,观看更多内容! 点我直达–>网络安全专栏 前言 ...

  7. seo优化-SEO实战密码—60天网站流量提高20倍

    seo优化-SEO实战密码-60天网站流量提高20倍 编辑推荐 Zac告诉你他所知道的关于SEO的一切 大名鼎鼎的Google反垃圾组负责人Matt Cutts为之作序 技术.原理.策略.分析.实例: ...

  8. Linux 网络wifi操作常用命令,查看WiFi密码

    最近在开发一个WiFi工具箱,其中了解到挺多的wifi和网络相关的命令,这里简单总结一下: 1.wpa系列 wpa是一个linux自带的WiFi管理工具,一般python或者其他wifi库在底层都是调 ...

  9. 区块链快速入门(六)——区块链密码学与安全相关技术

    一.区块链密码安全技术简介 区块链和分布式账本中大量使用了密码学和安全技术的最新成果,特别是身份认证和隐私保护相关技术.区块链使用了包括Hash 算法与摘要.加密算法.数字签名和证书.PKI体系.Me ...

  10. 夸克某上万资源目录结构解析

    夸克网盘分享里面好多书保存不下来,无法检索,尝试按目录列出清单 import mathfrom requests_html import HTMLSession import urllib.reque ...

最新文章

  1. 用Remoting 实现一个文件传输组件
  2. 一口气带你踩完五个 List 的大坑,真的是处处坑啊!
  3. 【机器视觉】探索机器学习理论的最新进展,走近云、端、芯上的视觉计算
  4. java web项目使用log4j的使用笔记
  5. 使用node.js作为简单的Web服务器
  6. 山东省各2021高考成绩查询,关于2021年山东省高考成绩查询系统入口【官网】
  7. 二层交换机的六条安全秘诀
  8. python3.6.1安装教程-在Linux上安装Python3.6.1
  9. 高性能流媒体服务器EasyDSS前端重构(二) webpack + vue + AdminLTE 多页面提取共用文件, 优化编译时间...
  10. 操作系统上机作业--创建N个线程(多线程)
  11. 前端:CSS/10/伪类选择器,CSS列表属性,CSS边框属性,CSS内边距属性,CSS背景属性
  12. Java - 利用StringEscapeUtils对字符串进行各种转义与反转义
  13. 【codevs3955】最长严格上升子序列(加强版)
  14. Git(9)-- 远程仓库的使用
  15. 马云:员工表现不好,老板要先检讨
  16. 机器学习5-支持向量机
  17. word快速复制上一页_如何快速轻松地在Word中复制格式
  18. JavaWeb-简析MVC三层架构
  19. Java集合面试题整理(超详细)
  20. Java Web入门之JSTL标签的解析及使用(超详细必看)

热门文章

  1. html ul4032,国标UL认证安规标准UL1059接线端子及附件.pdf
  2. 情感分类(Sentiment Classification)
  3. 电脑蓝屏0x0000006B不重装系统的解决办法
  4. web前端开发面试题(四)
  5. iphone禁止 iOS 系统频繁提示更新tvos.mobileconfig下载
  6. 滚动截屏苹果_苹果超好用的长截图软件—滚动截屏免费分享!
  7. 深入学习smali语法
  8. 房产中介管理系统php,房屋中介管理系统简易源代码.doc
  9. Gitblit安装遇到的一些问题
  10. Qt|表格代理的实现及使用代码qtableview和qtablewidget均适用