Java实现的Base64加密算法示例
作者:chengqiuming 发布时间:2023-10-29 00:37:08
标签:Java,Base64,加密算法
本文实例讲述了Java实现的Base64加密算法。分享给大家供大家参考,具体如下:
一 算法实现
1、JDK
2、Commonc Codec
3、Bouncy Castle
二 代码
package com.imooc.security.base64;
import java.io.IOException;
import org.apache.commons.codec.binary.Base64;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class ImoocBase64 {
private static String src = "cakin24 security base64";
public static void main(String[] args) {
jdkBase64();
commonsCodesBase64();
bouncyCastleBase64();
}
public static void jdkBase64() {
try {
BASE64Encoder encoder = new BASE64Encoder();
String encode = encoder.encode(src.getBytes());
System.out.println("encode : " + encode);
BASE64Decoder decoder = new BASE64Decoder();
System.out.println("decode : " + new String(decoder.decodeBuffer(encode)));
} catch (IOException e) {
e.printStackTrace();
}
}
public static void commonsCodesBase64() {
byte[] encodeBytes = Base64.encodeBase64(src.getBytes());
System.out.println("encode : " + new String(encodeBytes));
byte[] decodeBytes = Base64.decodeBase64(encodeBytes);
System.out.println("decode : " + new String(decodeBytes));
}
public static void bouncyCastleBase64() {
byte[] encodeBytes = org.bouncycastle.util.encoders.Base64.encode(src.getBytes());
System.out.println("encode : " + new String(encodeBytes));
byte[] decodeBytes = org.bouncycastle.util.encoders.Base64.decode(encodeBytes);
System.out.println("decode : " + new String(decodeBytes));
}
}
三 运行效果
encode : Y2FraW4yNCBzZWN1cml0eSBiYXNlNjQ=
decode : cakin24 security base64
encode : Y2FraW4yNCBzZWN1cml0eSBiYXNlNjQ=
decode : cakin24 security base64
encode : Y2FraW4yNCBzZWN1cml0eSBiYXNlNjQ=
decode : cakin24 security base64
四 应用场景
email、秘钥、证书文件
五 产生原因
邮件的历史问题
六 其他
基于64个字符的编码算法,定义于RFC 2045
补充:这里使用到了sun.misc.BASE64Encoder
和sun.misc.BASE64Decoder
,可通过如下设置在Eclipse中使用:
右击项目 --> Properties --> Java Build Path --> 点开JRE System Library --> 点击Access rules --> Edit --> Add --> Resolution选择Accessible --> Rule Pattern填上 ** --> OK
中文版Eclipse设置如下图所示:
来源:https://blog.csdn.net/chengqiuming/article/details/78602205


猜你喜欢
- 介绍Java命令模式(Command Pattern)是一种行为型设计模式,它将请求封装成一个对象,从而使不同的请求可以进行参数化,并支持请
- 在没介绍正文之前,先给大家介绍下websocket的背景和原理:背景在浏览器中通过http仅能实现单向的通信,comet可以一定程度上模拟双
- Java读取json数据并存入数据库1. pom依赖<dependency> &nbs
- 什么是粘包/拆包 一般所谓的TCP粘包是在一次接收数据不能完全地体现
- 前言:本文主要讲解以c语言编写猜数字游戏,目的是介绍C语言中的循环和分支的具体用法。一:猜数字游戏基本介绍&对程序预期.猜数字游戏,
- 1. 引入依赖pom文件引入activemq依赖<!--activeMq配置--> &
- 一、简介SpringBoot 中给普通变量注入值只需在变量上添加 @Value 注解即可。application.properties 配置
- 1、Service层:业务层–>控制业务业务模块的逻辑功能设计,和DAO层一样都是先设计接口,再创建要实现的类,然
- 好久没有写文章了,下面把自己最近程序中用到的一个小小的导出文件的方法给在家分享一下,欢迎大家来排砖,谢谢~不说废话了,直接上代码:using
- 一直使用Eclipse环境开发Android,也尝鲜使用过Android Studio去开发,各种IDE配合Android SDK及SDK原
- Spring框架七大模块简单介绍Spring中MVC模块代码详解Spring的WEB模块用于整合Web框架,例如Struts1、Struts
- 在eclipse中默认的maven,它加载的是国外的镜像,那样速度会比较慢,如果使用国内镜像,比如阿里的中央仓库;速度会快很多。那如何修改m
- 一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对
- 具体代码如下所示:/// <summary> /// 启用事务提交多条带参数的SQL语句 /// </summary>
- 前言现在一般很少有用Android原生app发送邮件的需求,但是前段时间公司项目需要在Android app 内部发送邮件,于是就在网上收集
- 背景java程序员一般写的是后端服务是JavaWeb类型的项目,主要包括Http接口和dubbo接口,Http接口一般采用的rest风格,那
- 在Android中,用string-array是一种简单的提取XML资源文件数据的方法。例子如下:把相应的数据放到values文件夹的arr
- 多对一(Many-to-One)映射多对一(many-to-one)关联是最常见的关联关系,其中一个对象可以与多个对象相关联。例如,一个相同
- 前言新进阶的程序员可能对async、await用得比较多,却对之前的异步了解甚少。本人就是此类,因此打算回顾学习下异步的进化史。本文主要是回
- Java常用类库Math类Math包含用于执行基本数字运算的方法,例如基本指数,对数,平方根和三角函数一、Field SummaryModi