热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JAVA加密算法使用——Base64编程使用(sun和cc)实现编解码工具类

该博客打算简单介绍下Base64编码以及在java环境下的两种编程使用(sun公司提供的jar和apache提供的jar)不过我这里是建议大家使用apache提供的BASE64的j

该博客打算简单介绍下Base64编码以及在java环境下的两种编程使用(sun公司提供的jar和apache提供的jar)//不过我这里是建议大家使用apache提供的BASE64的jar,因为sun内部API sun.misc.BASE64在编译时会出现后期可能被删除的潜在风险警告。所以,大家看着办把…….


该篇博客目录


1、Base64编码示例

2、Base64算法定义

3、Base64两种编程使用(sun.misc.BASE64和commons-codec)实现(编码解码工具类)



一、Base64编码示例


可以百度Base64编码,会有在线编辑器,可以看出明文“hello”经过Base64编码得到密文“aGVsbG8=”

这里写图片描述

下面是Base64编码表(密钥)

这里写图片描述



二、Base64算法定义


Base64是一种基于64个字符的编码算法,从任意8位字节序列组合的描述形式,这种形式不易直接识别,经过Base64编码后的字符串的字符数是以4为单位的整数倍




三、Base64两种编程使用(sun.misc.BASE64和commons-codec)(编码解码工具类)


1、sun.misc.BASE64.jar下


  • 该jar包add path

Base64编解码工具类BaseUtil

package Base64Demo;import java.io.IOException;import Decoder.BASE64Decoder;
import Decoder.BASE64Encoder;
/**基于"JDK"用法 */
public class Base64Util {/** 加密过程(编码) * 1、创建BASE64Encoder对象——en* 2、调用该对象的encode方法(将一个字节数组的明文进行编码转换为一个字符串)* 3、返回字符串* Tip:记得先将明文转换为字节数组 */public static String EncodeBase64(byte[] data) {BASE64Encoder en=new BASE64Encoder();String str=en.encode(data);return str;}/**解密过程(解码) *1、创建BASE64Decoder对象*2、调用该对象的decodeBuffer方法(将编码后的字符串转换为明文的字节数组)*3、将明文字节数组转换为相应的字符串*4、返回字符串*/public static String DecodeBase64(String data) throws IOException {BASE64Decoder de=new BASE64Decoder();byte[] ResultByte=de.decodeBuffer(data);String str=new String(ResultByte);return str;}
}

测试类

package Base64Demo;import java.io.IOException;import Decoder.BASE64Encoder;public class Base64Demo01 {public static final String DATA="hello";public static void main(String[] args) throws IOException {byte[] data=DATA.getBytes();String BaseResult=Base64Util.EncodeBase64(data);System.out.println("加密后:"+BaseResult);String str=BaseResult;String BaseResult_D=Base64Util.DecodeBase64(str);System.out.println("解密后:"+BaseResult_D);}}

这里写图片描述



2、commons-codec-1.11.jar下


  • 将commons-codec-1.11.jar包add path

Base64编解码工具类BaseUtil_cc

package Base64Demo;import org.apache.commons.codec.binary.Base64;
/**基于commons-codec-1.11 */public class Base64Utile_cc {/**加密过程 */public static String EncodeBase64(byte[] data){Base64 en=new Base64();String str=en.encodeBase64String(data);return str;}/**解密过程 */public static String DecodeBase64(String str) {Base64 de=new Base64();byte[] ResultBase=de.decodeBase64(str);String str2=new String(ResultBase);return str2;}}

测试类

package Base64Demo;public class Base64Demo02 {public static final String DATA="hello";public static void main(String[] args) {/**基于commons-codec-1.11 */byte[] data=DATA.getBytes();String str=Base64Utile_cc.EncodeBase64(data);System.out.println("加密后:"+str);String str2=Base64Utile_cc.DecodeBase64(str);System.out.println("解密后:"+str2);}}

相应结果和第一种方法是相同的

当然还有其他的jar包可以用,这里就不多做阐述了。


推荐阅读
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有