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/ 
如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】 
如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】 
如果,您对我的博客内容感兴趣,请继续关注我的后续博客,我是【Orson】 

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段 声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 

转载:http://www.cnblogs.com/java-class/p/4590383.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/294162.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

类和类之间的关系解析-1

一、泛化关系 泛化关系也称继承关系,指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。在Java中继承关系通过关键字extends明确标识&#xf…

转:智能卡测试操作系统技术

具有稳定、可靠的卡内操作系统是智能卡正常工作的基础,智能卡操作系统控制外界与智能卡之间的通信,管理卡片的存储空间,并且在卡内对于各种命令进行处理,所以在COS 开发过程中有必要对COS 进行充分且全面的测试。COS 的主要特点: …

Android之添加快捷方式(Shortcut)到手机桌面

在两个手机上测试,发现小米手机上添加了快捷方式后不能移除,三星手机可以。权限 要在手机桌面上添加快捷方式,首先需要在manifest中添加权限。 <!-- 添加快捷方式 --><uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"…

C# 使用阿里云发送短信

最近有个项目&#xff0c;短信服务使用的是阿里云的&#xff0c;想要使用阿里云平台的短信服务&#xff0c;首先要注册一个阿里云账号&#xff0c;由于发送短信消息需要用到短信签名、短信模板ID&#xff08;已添加并通过审核&#xff09;1、注册阿里云账号&#xff08;地址&am…

如果太阳系毁灭,这种神秘粒子就是真凶!

185年12月7日这一天&#xff0c;东汉中平二年乙丑&#xff0c;一位天文学家观测到天空出现了一颗极其明亮的星体&#xff0c;他并不知道这意味着什么。这颗突然出现于苍穹之中的星星在夜空中照耀了八个月后&#xff0c;又忽然消逝了。《后汉书天文志》中留下了这段记载&#xf…

Centos7 安装gitlab 8.7.5

简介&#xff1a;GitLab 是一个用于仓库管理系统的开源项目。使用Git作为代码管理工具&#xff0c;并在此基础上搭建起来的web服务。1. Web框架使用Ruby on Rails。2. 基于MIT代码发布协议。3. 需要gitolite协同工作。安装要求&#xff1a;ruby 1.9.3MySQLgitgitoliteredis如果…

ocx c++

引用&#xff1a;http://www.baike.com/wiki/ocx ocx&#xff0c;使用它可以很快地在网址、台式应用程序、以及开发工具中加入特殊的功能。 编辑摘要目录 [ 隐藏 ]1 定义2 用途ocx - 定义 ActiveX控件.ActiveX控件是可重用的软件组件。 ocx - 用途 使用它可以很快地在网址、台式…

男人会为女人改变多少

男人会为女人改变多少 女人都想改造男人   从前有人说&#xff0c;女人征服男人&#xff0c;然后通过男人征服世界&#xff1b;而现在是女人改造男人&#xff0c;然后男人按照女人的意愿改造世界。女人喜欢男人&#xff0c;这八成是错不了的&#xff0c;但女人永远不满意男人…

Andorid之BINDSERVICE的使用方法总结

bindService用于绑定一个服务。这样当bindService(intent,conn,flags)后,就会绑定一个服务。这样做可以获得这个服务对象本身,而用startService(intent)的方法只能启动服务。 bindService方式的一般过程: ①新建Service类BindService。在BindService类里新建内部类MyBinder…

linux说明管道的作用,Linux管道及重定向的用途是什么

1、重定向在Linux中有时我们在命令的执行过程中&#xff0c;不想将执行结果显示到屏幕上&#xff0c;或者将其结果输出到其他位置这时就需要重定向来解决这个问题了首先了解一下Linux中的3种I/O设备&#xff1a;0&#xff1a;标准输入1&#xff1a;标准输出2&#xff1a;标准错…

磨刀不误砍柴工—Exceptionless搭配log4net记录日志

Exceptionless专注于.net平台提供实时错误和日志报告。主要包括&#xff1a;错误通知、智能分组异常、详细错误报告堆栈跟踪、支持离线、UI查看重要错误和确定优先级、仪表板上的统计信息和趋势、对异常标记为已修复&#xff0c;监视回归、将事件标记为关键等。主要是用于展示、…

豆瓣9.6分!再一次被BBC的纪录片震惊!

英国广播公司BBC的纪录片素来就是高质量的代名词&#xff0c;推出的《地球无限》(Planet Earth)、《地球的力量》(Earth The Power of the Planet)、《冷血生命》(Life In Cold Blood)等片不仅在英国播放时获得极高收视&#xff0c;还获得艾美奖等多个国际奖项的肯定&#xff0…

C++中事件机制的简洁实现

事件模型是被广泛使用的好东西&#xff0c;但是C标准库里没有现成的&#xff0c;其他实现又复杂或者不优雅&#xff0c;比如需要使用宏。现在VC11可以用在XP下了&#xff0c;那么就痛快的拿起C11提供的先进设施组合出一个轻便的实现吧。 为了达到简洁的目的&#xff0c;需要放弃…

监测京东商品价格波动

写着玩的&#xff0c;不用再去每天看要买的商品是否降价&#xff0c;如果降价就发布一条推文。 #!/usr/bin/env python # coding: utf-8 import tweepy import requests import re import sys import datetime import json # 京东的编码是gbk reload(sys) sys.setdefaultencodi…

Andorid之Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)的用法总结

在调试代码的时候我们需要查看调试信息&#xff0c;那我们就需要用Android Log类。 android.util.Log常用的方法有以下5个&#xff1a;Log.v() Log.d() Log.i() Log.w() 以及 Log.e() 。根据首字母对应VERBOSE&#xff0c;DEBUG,INFO, WARN&#xff0c;ERROR。 1、Log.v 的调…

SharePoint 2010 master page 控件介绍(5):其他

转&#xff1a;http://blog.csdn.net/lgm97/article/details/6409227 <!-- 处理搜索按下“enter”键和点击后退按钮 --> <input type"text" name"__spDummyText1" style"display:none;" size"1"/> <input type"te…

linux iotop rpm,iotop命令_Linux iotop 命令用法详解:用来监视磁盘I/O使用状况的工具...

iotop命令是一个用来监视磁盘I/O使用状况的top类工具。iotop具有与top相似的UI&#xff0c;其中包括PID、用户、I/O、进程等相关信息。Linux下的IO统计工具如iostat&#xff0c;nmon等大多数是只能统计到per设备的读写情况&#xff0c;如果你想知道每个进程是如何使用IO的就比较…

.NET 6新特性试用 | LINQ功能改进

前言.NET6为LINQ添加了多个新API&#xff0c;在本文中&#xff0c;我们将始终使用User类逐一演示这些添加到LINQ中的内容&#xff1a;public class User {public string Name { get; set; }public int Age { get; set; } }*By方法包括下列方法&#xff1a;DistinctBy: 根据指定…

VS2010下的多线程窗口

多线程的调试一直是一个令人蛋疼的问题&#xff0c;一般的解决方法是写Log。有的时候想要直观地看一下线程的运行状态&#xff0c;简直是困难。幸好vs2010给我们提供了一个多线程窗口。 使用方式&#xff1a; 1、按F5进入调试状态下 2、按图1所示打开多线程窗口 图1 打开多线程…