BASE64 编码和解码

简介:

依赖jar: import org.apache.commons.codec.binary.Base64;

BASE64和其他相似的编码算法通常用于转换二进制数据为文本数据,其目的是为了简化存储或传输。更具体地说,BASE64算法主要用于转换二进 制数据为ASCII字符串格式。Java语言提供了一个非常好的BASE64算法的实现,即Apache Commons Codec工具包。本文将简要地讲述怎样使用BASE64以及它是怎样工作的。

下面我们用BASE64对字符串进行编码:

 

复制代码
import java.io.UnsupportedEncodingException; 
import org.apache.commons.codec.binary.Base64; 
   
public class Base64Test { 
    public static void main(String[] args){ 
        String str = "Hello World"; 
        try{ 
            System.out.println("RESULT: " + encodeStr(str)); 
        } catch(UnsupportedEncodingException e){ 
            e.printStackTrace(); 
        } 
    } 
}
复制代码

 

复制代码
    /** 
     * 解密 
     *  
     * @param pwd 
     * @return 
     * @see [类、类#方法、类#成员] 
     */  
    public static String decodeStr(String pwd)  
    {  
        Base64 base64 = new Base64();  
        byte[] debytes = base64.decodeBase64(new String(pwd).getBytes());  
        return new String(debytes);  
    }  

    /** 
     * 加密 
     *  
     * @param pwd 
     * @return 
     * @see [类、类#方法、类#成员] 
     */  
    public static String encodeStr(String pwd)  
    {  
        Base64 base64 = new Base64();  
        byte[] enbytes = base64.encodeBase64Chunked(pwd.getBytes());  
        return new String(enbytes);  
复制代码

 

输出结果为:

  1. RESULT: SGVsbG8gV29ybGQ=  

上面输出的字符串是“Hello world”字符串的8位二进制值被连接在一起,然后以6位分组。随后每个组都被转换成一个单独的数字并映射到Base64的索引。

复制代码
binary  dec Base64 
010010  18  S 
000110  6   G 
010101  21  V 
101100  44  s 
011011  27  b 
000110  6   G 
111100  60  8 
100000  32  g 
010101  29  d 
110110  54  2 
111101  61  9 
110010  50  y 
011011  27  b 
000110  6   G 
010000  16  Q
复制代码

注意:字符串最后加上了“=”,其意思表示字符串编码的结束。


本文转自Orson博客园博客,原文链接:http://www.cnblogs.com/java-class/p/4590383.html,如需转载请自行联系原作者

相关文章
|
Java 开发者 Spring
解析Spring中Bean的生命周期
解析Spring中Bean的生命周期
204 2
|
数据采集 移动开发 前端开发
如何使用JavaScript实现前端导入和导出excel文件(H5编辑器实战复盘)
最近笔者终于把H5-Dooring的后台管理系统初步搭建完成, 有了初步的数据采集和数据分析能力, 接下来我们就复盘一下其中涉及的几个知识点,并一一阐述其在Dooring H5可视化编辑器中的解决方案. 笔者将分成3篇文章来复盘, 主要解决场景如下
942 0
|
Java 开发者
Java SPI机制大揭秘:动态加载服务提供者,一文让你彻底解锁!
【8月更文挑战第25天】Java SPI(服务提供者接口)是一种强大的扩展机制,允许程序在运行时动态加载服务实现。本文首先介绍SPI的基本原理——定义接口并通过配置文件指定其实现类,随后通过示例演示其实现过程。接着,对比分析了SPI与反射及插件机制的不同之处,强调SPI在灵活性与扩展性方面的优势。最后,基于不同场景推荐合适的选择策略,帮助读者深入理解并有效利用SPI机制。
428 1
|
8月前
|
开发框架 监控 JavaScript
解锁鸿蒙装饰器:应用、原理与优势全解析
ArkTS提供了多维度的状态管理机制。在UI开发框架中,与UI相关联的数据可以在组件内使用,也可以在不同组件层级间传递,比如父子组件之间、爷孙组件之间,还可以在应用全局范围内传递或跨设备传递。
195 2
|
机器学习/深度学习 人工智能 安全
安全技术身份验证(Authentication)
【8月更文挑战第10天】
885 1
|
安全 Oracle 关系型数据库
看完这篇 教你玩转渗透测试靶机vulnhub——FunBox4(CTF)
看完这篇 教你玩转渗透测试靶机vulnhub——FunBox4(CTF)
473 1
看完这篇 教你玩转渗透测试靶机vulnhub——FunBox4(CTF)
|
项目管理 C++
【VS Code】安装配置调试C/C++(二)
【VS Code】安装配置调试C/C++(二)
258 1
elementUI引用el-image-viewer组件全局方法预览大图
elementUI引用el-image-viewer组件全局方法预览大图
|
缓存 Java Android开发
Android Gradle Plugin 源码解析(上)
一、源码依赖 本文基于: android gradle plugin版本: com.android.tools.build:gradle:2.
2257 0
|
人工智能 物联网 大数据
阿里云认证考试多少分通过?没通过可以补考吗?
什么是未来最有发展力的行业,十个人中八个人都会回答IT行业,对于广大的普通人来说,计算机行业是能够快速挣钱的唯一行业了。
阿里云认证考试多少分通过?没通过可以补考吗?