Base64编码是什么?

Base64,顾名思义,就是包括小写字母a-z、大写字母A-Z、数字0-9、符号"+"、"/"一共64个字符的字符集,(另加一个“=”,实际是65个字符)。任何符号都可以转换成这个字符集中的字符,这个转换过程就叫做base64编码。

Base64索引表

原文的字节数量应该是3的倍数,如果这个条件不能满足的话,具体的解决办法是这样的:原文剩余的字节根据编码规则继续单独转(1变2,2变3;不够的位数用0补全),再用=号补满4个字节。这就是为什么有些Base64编码会以一个或两个等号结束的原因,但等号最多只有两个。因为一个原字节至少会变成两个目标字节,所以余数任何情况下都只可能是0,1,2这三个数中的一个。如果余数是0的话,就表示原文字节数正好是3的倍数(最理想的情况)。如果是1的话,转成2个Base64编码字符,为了让Base64编码是4的倍数,就要补2个等号;同理,如果是2的话,就要补1个等号。

Base64的转换

标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。

为解决此问题,可采用一种用于URL的改进Base64编码,将标准Base64中的“+”和“/”分别改成了“-”和“_”

import java.util.Base64;
对于标准的Base64:
加密为字符串使用Base64.getEncoder().encodeToString();
加密为字节数组使用Base64.getEncoder().encode();
解密使用Base64.getDecoder().decode();
对于URL安全或MIME的Base64,只需将上述getEncoder()getDecoder()更换为getUrlEncoder()getUrlDecoder()
或getMimeEncoder()和getMimeDecoder()即可。

Base64编码相关知识总结相关推荐

  1. base64编码相关-btoa和atob及中文乱码报错问题

    base64编码相关-btoa和atob及中文乱码报错问题 最近在做二进制编码相关的东西,关于Base64的编码解码问题.遇到了一些问题. btoa(); btoa函数全称就是Binary-to-AS ...

  2. 字符编码相关知识总结

    1. 什么是字符 字符是书写的最基本构建单元.字符可以表示字母.数字.标点.表意符号(比如汉字).数学符号,或者其他的书写基本单元. 不能把字符和字形相混淆.字符是唯一的,抽象的语言"原子& ...

  3. 通过在操作系统中实际操作,学习和理解 Unicode 编码相关知识

    我们通过在操作系统里进行一些简单的联系,可以加深对 Unicode 编码这些基础知识的理解和记忆. Windows10 操作系统下,新建一个记事本文件,输入 123ABCabc 默认的 encodin ...

  4. Turbo编码相关知识

    这段时间里,看到的一些书籍和程序中,很多都用到LDPC码,卷积码和Turbo码,刚好又在学习Turbo码,故将资料中的关于Turbo码编码的知识点加以整理.    Turbo编码进化自卷积码,在LTE ...

  5. 计算机编码基础知识及Java中编码转换

    一.前言 最近项目中用到招商银行的企业直连功能,通过接口的方式直接调用招商银行的前置机(http://www.cmbchina.com/corporate/firmbank/FirmbankInfo. ...

  6. 前端Base64编码知识,一文打尽

    原文: https://juejin.cn/post/6989391487200919566 作者: 云的世界 掘金专栏: 前端基础进阶 健康满分 关注并将「趣谈前端」设为星标 每天定时分享技术干货/ ...

  7. 一文打尽前端 Base64 编码知识

    关注公众号 前端开发博客,回复"加群" 加入我们一起学习,天天进步 前言 本文收录在 前端基础进阶[1] 专栏,欢迎关注和收藏, 往期经典: [干货]私藏的这些高级工具函数,你拥有 ...

  8. ios开发Base64编码以及加密相关学习

    一:.Base64补充 ```objc 1.Base64简单说明 描述:Base64可以成为密码学的基石,非常重要. 特点:可以将任意的二进制数据进行Base64编码 结果:所有的数据都能被编码为并只 ...

  9. 一些Base64编码/解码及数据压缩/解压方面的知识

    一.Base64编码/解码 一般用到的是Delphi自带的单元EncdDecd,当然还有第三方提供的单元或控件,其中我所接触到的认为比较好的有Indy的TIdMimeEncode / TIdMimeD ...

最新文章

  1. 隐藏通知内容什么意思_降额来袭!信用卡风控短信背后,的“隐藏暗语”你懂吗?...
  2. 从思维图到基础再到深入,java空间查询
  3. Android SQL语句实现数据库的增删改查
  4. CF567E President and Roads
  5. 微课|中学生可以这样学Python(例9.1):Excel导入SQLite(1)
  6. 计算机科学实验班高考线,北京工业大学计算机科学与技术(实验班)专业2015年在北京理科高考录取最低分数线...
  7. zabbix监控iptables防火墙状态之是否有丢弃的包(攻-击)
  8. ES6新特性_ES6语法糖-子类对父类方法的重写---JavaScript_ECMAScript_ES6-ES11新特性工作笔记037
  9. C++(八)— 死锁原因及解决方法
  10. 兰州大学2016年初试成绩基本要求
  11. 板级电源究竟该怎么选型芯片?(实战篇)
  12. 查看 PCD 点云 windows
  13. SSLv3 协议漏洞‘POODLE’修复与相关概念
  14. Echarts设置y轴值间隔
  15. 毕业设计--20200302--domoticz-ESP8266+micropython+MQTT 发送数据到 虚拟传感器
  16. 揭开手机app中摇一摇的神秘面纱
  17. Tomcat环境搭建与常见问题详解
  18. 【Linux】常见命令总结
  19. 新手看spdlog源码做笔记以及附上简单使用手册
  20. SQLite 表达式索引的概念和作用

热门文章

  1. Python:range()和np.arange()区别
  2. 【C语言习题】构造体数组:构造“学生成绩”结构体
  3. 惊人的预测——来自2019麦肯锡报告《中国与世界》完整版
  4. bp神经网络和神经网络,bp神经网络是什么网络
  5. Win10右下角的天气怎么关闭?
  6. 免费gpu:kaggle本地项目上传使用说明
  7. 衡阳八中高考成绩查询2021,2021年衡阳高考状元名单公布,衡阳高考状元学校资料及最高分...
  8. 搭建自己的饥荒Don‘t Starve服务器-饥荒Don‘t Starve开服教程
  9. 【产品宣传广告片制作软件】Focusky教程 | 插入视频的3种方法
  10. 做自媒体视频二次剪辑,怎样剪辑不算侵权