详解Linux Base64

Base64编码在电子邮件中很常见,Foxmail、Outlook等邮件用户代理发邮件时进行SMTP验证,就是输入base64编码格式的用户名和密码进行验证的,而邮件的主体内容和附件都很普遍的使用base64编码进行传输。

Base64命令使用实例

这是测试文件file,内容就只有一行字符串”snailwarrior”。

[root@pps ~]# cat file
snailwarrior12

第一种,给文件file进行base64编码,并打印到标准输出,如下

[root@pps ~]# base64 file
c25haWx3YXJyaW9yCg==12

也可以这样:

[root@pps ~]# cat file | base64
c25haWx3YXJyaW9yCg==12

第二种,从标准输入读取文件内容,base64编码并打印到标准输出

[root@pps ~]# base64
snailwarrior
c25haWx3YXJyaW9yCg==123

我是输入snailwarrior,回车,然后按Ctrl+D结束文件输入的。

【注意】如果我不输入回车,连续输入两次Ctrl+D,看看效果如何,如下,

[root@pps ~]# base64
snailwarriorc25haWx3YXJyaW9y12

可以看出,编码出来的字符串是:c25haWx3YXJyaW9y

我的神!两种方式编码出来的结果不一样啊!继续往下测试。

第三种,对字符串”snailwarrior”编码,并打印到标准输出,如下

[root@pps ~]# echo "snailwarrior" | base64
c25haWx3YXJyaW9yCg==12

这个结果跟前面”cat file”和输入snailwarrior按回车再按Ctrl+D的情况是一样的。为什么不按回车直按两次Ctrl+D的结果不一样呢?我们再来看看下面这个例子:

[root@pps ~]# echo -n "snailwarrior" | base64
c25haWx3YXJyaW9y12

你是不是惊讶的发现“缘由”了呢?

echo -n 选项没有输出字符串结尾的’\n’换行字符,因此字符串”snailwarrior”精确的base64编码是”c25haWx3YXJyaW9y”,可以用PHP函数来检验哦。文件方式等进行的”snailwarrior”字符串编码都带入了对’\n’的编码,因此,不小心就会发生莫名的编码错误哦。

base64的Java代码如下,

String pwd = "test";
byte[] enbytes = Base64.encodeBase64(pwd.getBytes());
log.info(">> {}",new String(enbytes));


byte[] debytes = Base64.decodeBase64(new String("eyJuYW1lIjoi5byg5LiJIn0K"));
log.info(">> {}",new String(debytes));1234567

需要通过maven依相应的jar文件,如下,


  
       
   
    commons-codec
       
   
    commons-codec
   
  

原创文章,作者:晴川运维,如若转载,请注明出处:https://baike.qcidc.com/13299.html

(0)
晴川运维晴川运维
上一篇 2025年9月21日
下一篇 2025年9月21日

相关推荐

  • Swift变量讲解

    Swift是一种适用于iOS和OS X应用的全新编程语言,它建立在最好的C和Objective-C语言之上,并且没有C语言的兼容性限制。Swift采用安全的编程模式,增加了现代功能…

    Linux系统 2025年10月20日
  • Shell输入重定向讲解

    输入重定向是指把文件导入到命令中,而输出重定向则是指把原本要输出到屏幕的数据信息写入到指定文件中,下面为大家详细讲解一下输入重定向。 和输出重定向一样,Unix 命令也可以从文件获…

    Linux系统 2025年10月27日
  • Linux系统中安装Chrome和Sogou输入法具体方法

    本篇文章重点为大家讲解一下Linux系统中安装Chrome和Sogou输入法具体方法,有需要的小伙伴可以参考一下。 安装谷歌浏览器 install google-chro…

    Linux系统 2025年10月6日
  • 使用C++解决牛吃草问题

    问题如下: 有一个牧场,牧场上的牧草每天都在匀速生长,这片牧场可供15头牛吃20天,或供20头牛吃10天,那么,这片牧场每天新生的草量可供几头牛吃一天? 数学解题思路如下: 假设一…

    Linux系统 2025年6月30日
  • Linux grep基础入门

    grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予…

    Linux系统 2025年6月13日
  • 简单介绍一下kafka常用命令

    Kafka是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,本…

    Linux系统 2025年6月8日
  • Linux中ping命令的特殊使用方法

    不管在windows平台,还是在linux平台,ping都是非常常用的网络命令;ping命令通过ICMP(Internet控制消息协议)工作;ping可以用来测试本机与目标主机是否…

    Linux系统 2025年7月8日
  • SSH连接调试小技巧

    本篇文章重点为大家讲解一下SSH连接调试小技巧,有需要的小伙伴可以参考一下。 问题一:SSH服务没有运行 SSH连接错误的常见原因是服务未在远程服务器上运行。这可能是由于服务意外关…

    Linux系统 2025年6月9日
  • Linux下安装PHP的PDO

    PDO(PHP Data Objects)是一种在PHP里连接数据库的使用接口。PDO与mysqli曾经被建议用来取代原本PHP在用的mysql相关函数,基于数据库使用的安全性,因…

    Linux系统 2025年6月26日
  • Linux常用命令mmount命令具体使用方法

    Linux mmount命令用于挂入MS-DOS文件系统。 mmount为mtools工具指令,可根据[mount参数]中的设置,将磁盘内容挂入到Linux目录中。 语法 mmou…

    Linux系统 2025年6月8日

发表回复

登录后才能评论