【算法笔记】Base64和Base58
Page content
这篇文章简单的整理了Base64和Base58
。
1.Base64介绍
Base64(基底64)是一种基于64个可打印字符来表示二进制数据的表示方法。 Base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据,包括MIME的电子邮件及XML的一些复杂数据。
2.Base64原理
base64的步骤
- 将每个字符转成ASCII编码(10进制)
- 将10进制编码转成2进制编码
- 将2进制编码按照6位一组进行平分
- 将6位1组的2进制数高位补零,然后转成10进制
- 将10进制数作为索引,从Base64编码表中查找字符
- 每3个字符的文本将编码为4个字符长度(3 * 8 = 4 * 6)
当长度不够时会补0(后面多出个=号)
3.Base58
Base58是用于比特币(Bitcoin)中使用的一种独特的编码方式,主要用于产生Bitcoin的钱包地址。相比Base64,Base58不使用数字"0",字母大写"O",字母大写"I",和字母小写"l",以及"+“和”/“符号。
设计Base58主要的目的是:
- 避免混淆。在某些字体下,数字0和字母大写O,以及字母大写I和字母小写l会非常相似。
- 不使用”+“和”/“的原因是非字母或数字的字符串作为帐号较难被接受。
- 没有标点符号,通常不会被从中间分行。
- 大部分的软件支持双击选择整个字符串。
由于256不能被58所整除,Base58无法像Base64那样子转换为8位元的二进位后依次取出6位元,就可以快速完成转换;因此,Base58编码演算法需要除法运算实现。如果被编码的数据较长,则要用特殊的class来处理大数,在Bitcoin使用了OpenSSL中的BIGNUM:
欢迎大家的意见和交流
email: li_mingxie@163.com