总是听到BASE64,其实对它并不了解。此文记录一些BASE64的基本概念。
1. BASE64是加密?
不,虽然有"加密"后不是明文,但逆编码的规则明确,所以“防君子不防小人”,只是没办法一眼看出内容罢了。它是一种"编码"。
2. BASE64的大概算法:
把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。——所以编码后大概会多出1/3的长度
3. BASE64编码没有安全的加密效果,发明这个编码来使消息长度多出1/3,这不是画蛇添足么?
不是的。这得看BASE64的来源。在Email的传送过程中,由于历史原因,Email只被允许传送ASCII字符,即一个8位字节的低7位。因此,如果您发送了一封带有非ASCII字符(即字节的最高位是1)的Email通过有“历史问题”的网关时就可能会出现问题。网关可能会把最高位置为0!那邮件内容不就变了。结合BASE64的算法,就可以看出BASE64绕过了最高位变成0的问题。
4.传说中比JDK原生BASE64算法实现要好的开源JAVA实现(好绕口):
http://migbase64.sourceforge.net/
5.相关资料:
http://www.5dmail.net/html/2004-1-30/200413084348.htm 上面的内容就是从里面摘录出来的
http://zttcn.iteye.com/blog/153766 上面第3点提到的非ASCII字符有8位的问题,这篇文章里列举了具体的各种字符集的位数,比如咱常见的ISO-8859-1字符集,就是8位的咯
分享到:
相关推荐
任务 Base64解码 INTERNATIONAL MEDICAL SUMMIT FORUM 任务 Base64解码 任务背景 ...Base64:Python中提供了Base64编码和解码的基础模块。 编码方法:base64.b64encode(bytes),因base64编码时是对字节进行
基础知识是在 GO 中创建一个 REST 服务器,该服务器连接到 mongo 服务器以存储/检索 Base64 图像。 需要做什么: 创建休息服务器。 创建 Mongo 连接器。 Mongo 连接器现在需要测试。 在由 Darthlukan 提供的 ...
区块链技术是计算机技术与金融技术交融的成功创新,被认为是极具潜力的分布式账本平台的核心技术。作为 Linux 基金会支持的开源分布式账本平台,Hyperledger 受到了众多企业的参与支持和应用。Docker 是个划时代的...
sas base 基础知识一本通doc,程序员主要是自我学习,通过不断的看书,看资料逐渐积累自己的代码写作水平,这本书是参加培训的时候的内部资料,非常实用,现在分享出来,仅供大家参考
Base64加密需要的Bouncy Castle和Commons Codec的jar包(commons-codec-1.10.jar、bcprov...文章名称:数据加解密基础知识介绍,及Java实现Base64加密,链接:https://blog.csdn.net/slvayf/article/details/83377834。
关于javabase的ppt ;基础知识;
1-2-oracle数据库基础 Oracle体系结构 共158页.ppt 2-1-大型数据库值Oracle 11g SQL Plus 共46页.ppt 2-2-Oracle数据库知识 PLSQL介绍 共69页.ppt 3-1-Oracle数据库知识 PLSQL控制结构 共25页.ppt 4-1-异常处理 共87...
Knowledge-Base 由 @余弦 大大团队 @慢雾科技 所维护的区块链安全知识库,内容主要包含基础研究、翻译资料、开放报告等分类
Android基础 android基础知识
在语义、数学、推理、代码、知识等不同角度的数据集上测评显示,* ChatGLM3-6B-Base 具有在 10B 以下的基础模型中最强的性能*。 更完整的功能支持: ChatGLM3-6B 采用了全新设计的 Prompt 格式 ,除正常的多轮对话外...
本文主要介绍base关键字的使用方法,base关键字可以调用基类重写的方法,可以调用基类的构造方法,还可以在EntityFramework中使用,下面一一介绍。
第01章 数据库基础知识 数据库技术和系统已经成为信息基础设施的核心技术和重要基础。数据库技术作为数据管理的最有效的手段,极大的促进了计算机应用的发展。本章将介绍数据库、数据库系统、数据管理系统、数据模型...
节点库 Node.js基础知识。
Estrutura基础机器学习和深度学习com PyTorch。 奥拉,比索。 永久性免责声明和示例性免责声明。埃斯特鲁图拉Dockerfile:Visual Studio Code como Visual Studio Code远程开发扩展包的实用程序( ); train.py:...
安卓基础知识,从《第一行代码》开始 整理了Android应用部分基础知识的实践(demo) 1.IntentService案例: 相比于传统的Service,它不必考虑如何创建一个线程去执行耗时/网络操作(ps,Service默认也是执行在主UI...
而在BC547基础知识里面bc547参数与bc547引脚图是比较重要的。 下面我将讨论名为BC547的新电子组件。它是BJT晶体管,通常用于需要快速切换的地方。如果您在工程项目中使用此晶体管,那么我建议您下载BC547的Proteus ...
网络与通信:数据传输、信号处理、网络协议、网络与通信硬件、网络安全网络与通信是一个非常广泛的领域,它涉及到计算机科学、电子工程、数学等多个学科的知识。 云计算与大数据:包括云计算平台、大数据分析、人工...
java-base:java知识实战(基础知识,集合类及源码,设计模式,常见组件测试如:kafka,redis,nginx等)
基础知识库WEB Nginx PHP 7.4 L:Linux高山 N:Nginx P:PHP 7.4 PHP MySQL扩展 MySQL的 mysqli 例子 用法 ENV FLAG = ctfhub {nginx_php_74} 使用此映像时,应重写flag.sh。 $FLAG不是强制性的,但我希望您能...
JAVA基础知识,PPT格式,还有两个源程序。