Base64算法了解与实现

本文详细介绍了Base64编码原理,通过实例展示了编码过程,并探讨了编码表的使用和扩展,包括自定义编码位数和编码表的可能性。同时,提到了Base64编码在数据传递中的应用和其非加密特性。
摘要由CSDN通过智能技术生成


一. 编码表


ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
(这里有65个字符, 其中64个用于编码, 最后一个用于补齐使用, 这里是'=')


例子: 字符串"abc"的编码过程
       明文:  a,         b         c        
十六进制:  0x61,      0x62,      0x63      (ASCII值)
   二进制:  0110 0001, 0110 0010, 01100011  (把这三个八位的二进制数拆分为四个六位的二进制数)
            (8 * 3 = 24 = 6 * 4; 刚刚好是6的整数倍)
            (24是8和6的最小公倍数) 
  二进制: 011000, 010110, 001001, 100011  (这4个值就是编码的索引)
  十进制: 24,     22,     9,      35
对应表值: Y,      W,      J,      j
    密文: YWJj

------------------------------------------------------------------------------------------
例子: 字符串"abcd"的编码过程
    明文: a,         b,         c,         d
十六进制: 0x61,      0x62,      0x63,      0x64
  二进制: 0110 0001, 0110 0010, 0110 0011, 0110 0100
  二进制: 011000, 010110, 001001, 100011, 011001, 000000
  十进制: 24,     22,     9,      35,     25,     0
对应表值: Y,      W,      J,      j,      Z,      A
    密文: YWJjZA==
(明文的长度要是3的倍数, 否则, 如果差1才是3的倍数, 就要在密文后加1个符号(这里是'=');
如果差2才是3的倍数, 就要在密文后加2个符号(这里是'=');
------------------------------------------------------------------------------------------

例子: 字符串"abcde"的编码过程
    明文: a,         b,         c,         d,         e
十六进制: 0x61,      0x62,      0x63,      0x64,      0x65
  二进制: 0110 0001, 0110 0010, 0110 0011, 0110 0100, 0110 0101
  二进制: 011000, 010110, 001001, 1

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值