base64 编码原理

近期接触AI图片识别,图片转码,从而接触到base64编码原理。为后续实现此编码原理,先学习了解~

base64编码

base64是一种编码方式。
选出64个符号作为基础字符集,将其他字符都转换成这个字符集的内容,包括A~Z a~z 0~9 + /共64个,但偶尔用'='补位,所以实际上是65个。

base64对应关系表
    0   A   15  P   30  e   45  t   60  8
    
    1   B   16  Q   31  f   46  u   61  9
    
    2   C   17  R   32  g   47  v   62  +
    
    3   D   18  S   33  h   48  w   63  /
    
    4   E   19  T   34  i   49  x
    
    5   F   20  U   35  j   50  y
    
    6   G   21  V   36  k   51  z
    
    7   H   22  W   37  l   52  0
    
    8   I   23  X   38  m   53  1
    
    9   J   24  Y   39  n   54  2
    
    10  K   25  Z   40  o   55  3
    
    11  L   26  a   41  p   56  4
    
    12  M   27  b   42  q   57  5
    
    13  N   28  c   43  r   58  6
    
    14  O   29  d   44  s   59  7

转换步骤

1 三个字节为一组,一个字节为8位2进制,共24个二进制位
2 将24个二进制位分为四组,每组6个二进制位
3 在每组的头部,补充00,变为4组8个二进制位
4 根据对应表格,拿到扩展后的字符

转换列子 Key

(新手画表 懂的大佬评论指导一哈吧)

原始字符 K e y
ASCII 75 101 121
二进制 0100 1011 0110 0101 0111 1001
分割 010010 110110 010101 111001
补位 00010010 00110110 00010101 00111001
转10进制 18 54 21 57
表对应 S 2 V 5

Linux语句获得字符ASCII码值

[root@localhost moic_a] echo K | tr -d "\n" | od -An -t dC
    75
Key

Linux命令转换base64 (Cg==是换行)

[root@localhost moic_a] echo "Key" | base64
S2V5Cg==

当为两个字节时,将16位二进制按6.6.4分开,前两组前加00,第三组前后加00,最后第四位用 '=' 补位

原始字符 K e
ASCII 75 101
二进制 0100 1011 0110 0101
分割 010010 110110 0101
补位 00010010 00110110 00010100
转10进制 18 54 20 =
表对应 S 2 U =
Ke
[root@localhost moic_a] echo "Ke" | base64
S2UK

当为一个字节时,将8位二进制按6.2分开,第一组前面加00,第二组前面加00,后面加0000

原始字符 K
ASCII 75
二进制 0100 1011
分割 010010 11
补位 00010010 00110000
转10进制 18 48 = =
表对应 S w = =
K
[root@localhost moic_a] echo "K" | base64
Swo=

Linux转换和在线转换结果不一致

因为base64编转码有不同的包可实现,包内部算法不同会造成转换结果不一致,所以在url加密时,尽量不要用base64。
base64 在线转换验证
阮一峰大佬博客base64文章链接

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Base64的由来 目前Base64已经成为网络上常见的传输8Bit字节代码的编码方式之一。在做支付系统时,系统之...
    飞狗未来阅读 466评论 0 0
  • 1、Base64编码原理 下图为Base64编码索引表: 字符选用了"A-Z、a-z、0-9、+、/" 64个可打...
    M_JCs阅读 1,888评论 1 9
  • 说明 HTTP将Base64编码用于基本的认证和摘要认证。其可以方便的将用户的任何输入转换成只包含特定字符的安全格...
    丹丹十个胆小鬼阅读 2,453评论 0 1
  • 版权声明:本文为人家博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。原文链...
    yahzon阅读 428评论 0 0
  • 公司内训,北宸老师给我们上写作课,我听完了第一节。现在,我来说说我与写作的故事。 上大学之前我爱看以左晴雯、苍月、...
    哎呦松鼠阅读 274评论 1 5

友情链接更多精彩内容