base64原理及命令使用

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介:

由于想在Linux上从迅雷里下东西,所以遇到了base64,顺便了解了一下。简单来说(不一定准确):base64是一个可以将二进制数据转化成[A-Za-z0-9+/]的字符串,常用于网页、邮件。

通常一个网页下载下来,离线打开,你可能会发现网页上的图片还在。但你搜遍整个网页都没有打到对应的二进制数据。原来是图片数据被转换成文本的形式。

base64的原理是将每3个字节用4个可打印的字符来表示。网上有很多原理的介绍:维基百科

我自己用自己的话来描述一下这个过程:每次取3个字节出来,组成一个24bits的数据(每个字节8bits*3=24bits)。再将这24bits的数据以6bits为一组分隔成4个组。每一组的数值范围为0~63。然后用"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"这64个字符来表示这个值。当然,按3个字节拆分,到最后来肯定会有不足3个的情况,那就填0再计算。在编码完成之后,用“=”的个数来表示最后是剩下的是一个字节还是两个字节或是没有剩。

原理介绍到这里,下面讲一下base64命令的使用方法:

加密字串:


$ echo -n "Hi, I am Hevake Lee" | base64

加密文件


$ base64 photo.jpg

命令执行完成后会在标准输出打印加密后的字串。如果需要保存,你是可以重定位到文件的。如:


$ base64 photo.jpg > photo.jpg.b64

解密方法与加密方法是一样的,只不过base64加一个'-d'参数表示解码。


目录
相关文章
|
6月前
|
安全 Shell Android开发
Android系统 init.rc sys/class系统节点写不进解决方案和原理分析
Android系统 init.rc sys/class系统节点写不进解决方案和原理分析
331 0
|
3月前
|
Oracle Java 关系型数据库
简单记录在Linux上安装JDK环境的步骤,以及解决运行Java程序时出现Error Could not find or load main class XXX问题
本文记录了在Linux系统上安装JDK环境的步骤,并提供了解决运行Java程序时出现的"Error Could not find or load main class XXX"问题的方案,主要是通过重新配置和刷新JDK环境变量来解决。
123 0
|
12月前
一行代码 base64批量解密
一行代码 base64批量解密
124 0
|
6月前
|
XML 存储 算法
BASE64的算法说明
【5月更文挑战第10天】BASE64的算法说明
55 3
|
5月前
|
Linux
Linux中的Base64编码与解码:`base64`命令详解
Linux的`base64`命令用于Base64编码和解码文本数据,常在邮件和HTTP中传输二进制信息。编码示例:`base64 input.txt`,解码示例:`base64 -d encoded.txt`或`echo "SGVsbG8sIFdvcmxkIQo=" | base64 -d`。注意,编码后数据会增大33%,且可能含换行符。广泛应用于多种系统和协议,如MIME。
|
6月前
|
移动开发 算法 安全
安卓逆向 -- 算法基础(Base64与HEX)
安卓逆向 -- 算法基础(Base64与HEX)
37 1
|
6月前
|
存储 前端开发 JavaScript
前端base64转file文件方法
前端base64转file文件方法
665 0
|
6月前
|
存储 算法 安全
C/C++学习 -- Base64算法
C/C++学习 -- Base64算法
62 0
|
6月前
|
移动开发 安全 数据安全/隐私保护
class dump使用方式和原理
class dump使用方式和原理
38 0
|
11月前
|
移动开发 安全 数据安全/隐私保护
class dump使用方式和原理
导出的包是经过混淆,经过加固比较安全的包了