当前位置:   article > 正文

base64加密java_Java语言实现 Base64 加密 & 解密

base64 java 加解密

Java语言实现 Base64 加密 & 解密

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。

Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。

采用Base64编码具有不可读性,需要解码后才能阅读。

Base64由于以上优点被广泛应用于计算机的各个领域。

本文讲解如何使用Java语言实现Base64的加密和解密。(基于 JDK 1.8 的新增功能 Base64 特性)

初始版本

代码如下:

importjava.io.UnsupportedEncodingException;importjava.util.Base64;/***@authorMiracle Luna

*@version1.0

* @date 2019/7/3 18:55*/

public classBase64Converter {final static Base64.Encoder encoder =Base64.getEncoder();final static Base64.Decoder decoder =Base64.getDecoder();/*** 给字符串加密

*@paramtext

*@return

*/

public staticString encode(String text) {byte[] textByte = new byte[0];try{

textByte= text.getBytes("UTF-8");

}catch(UnsupportedEncodingException e) {

e.printStackTrace();

}

String encodedText=encoder.encodeToString(textByte);returnencodedText;

}/*** 将加密后的字符串进行解密

*@paramencodedText

*@return

*/

public staticString decode(String encodedText) {

String text= null;try{

text= new String(decoder.decode(encodedText), "UTF-8");

}catch(UnsupportedEncodingException e) {

e.printStackTrace();

}returntext;

}public static void main(String[] args) throwsUnsupportedEncodingException {

String username= "Miracle Luna";

String password= "p@sSW0rd";//加密

System.out.println("==== [加密后] 用户名/密码 =====");

System.out.println(Base64Converter.encode(username));

System.out.println(Base64Converter.encode(password));//解密

System.out.println("\n==== [解密后] 用户名/密码 =====");

System.out.println(Base64Converter.decode(Base64Converter.encode(username)));

System.out.println(Base64Converter.decode(Base64Converter.encode(password)));

}

}

运行结果如下:

==== [加密后] 用户名/密码 =====TWlyYWNsZSBMdW5h

cEBzU1cwcmQ=

==== [解密后] 用户名/密码 =====Miracle Luna

p@sSW0rd

改进版本(推荐)

代码如下:

importjava.nio.charset.StandardCharsets;importjava.util.Base64;/***@authorMiracle Luna

*@version1.0

* @date 2019/7/3 18:55*/

public classBase64Util {final static Base64.Encoder encoder =Base64.getEncoder();final static Base64.Decoder decoder =Base64.getDecoder();/*** 给字符串加密

*@paramtext

*@return

*/

public staticString encode(String text) {//byte[] textByte = text.getBytes(StandardCharsets.UTF_8);//String encodedText = encoder.encodeToString(textByte);//return encodedText;

returnencoder.encodeToString(text.getBytes(StandardCharsets.UTF_8));

}/*** 将加密后的字符串进行解密

*@paramencodedText

*@return

*/

public staticString decode(String encodedText) {return newString(decoder.decode(encodedText), StandardCharsets.UTF_8);

}public static voidmain(String[] args) {

String username= "Miracle Luna";

String password= "p@sSW0rd";//加密

System.out.println("==== [加密后] 用户名/密码 =====");

System.out.println(Base64Util.encode(username));

System.out.println(Base64Util.encode(password));//解密

System.out.println("\n==== [解密后] 用户名/密码 =====");

System.out.println(Base64Util.decode(Base64Util.encode(username)));

System.out.println(Base64Util.decode(Base64Util.encode(password)));

}

}

运行结果如下:

==== [加密后] 用户名/密码 =====TWlyYWNsZSBMdW5h

cEBzU1cwcmQ=

==== [解密后] 用户名/密码 =====Miracle Luna

p@sSW0rd

PS:

改进版本使用了 StandardCharsets.UTF_8 代替了 "UTF-8"。

所以,没有抛出初始版本的 UnsupportedEncodingException异常。

StandardCharsets.java 源码如下:

/** Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.

* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

**/

packagejava.nio.charset;/*** Constant definitions for the standard {@linkCharset Charsets}. These

* charsets are guaranteed to be available on every implementation of the Java

* platform.

*

*@seeStandard Charsets

*@since1.7*/

public final classStandardCharsets {privateStandardCharsets() {throw new AssertionError("No java.nio.charset.StandardCharsets instances for you!");

}/*** Seven-bit ASCII, a.k.a. ISO646-US, a.k.a. the Basic Latin block of the

* Unicode character set*/

public static final Charset US_ASCII = Charset.forName("US-ASCII");/*** ISO Latin Alphabet No. 1, a.k.a. ISO-LATIN-1*/

public static final Charset ISO_8859_1 = Charset.forName("ISO-8859-1");/*** Eight-bit UCS Transformation Format*/

public static final Charset UTF_8 = Charset.forName("UTF-8");/*** Sixteen-bit UCS Transformation Format, big-endian byte order*/

public static final Charset UTF_16BE = Charset.forName("UTF-16BE");/*** Sixteen-bit UCS Transformation Format, little-endian byte order*/

public static final Charset UTF_16LE = Charset.forName("UTF-16LE");/*** Sixteen-bit UCS Transformation Format, byte order identified by an

* optional byte-order mark*/

public static final Charset UTF_16 = Charset.forName("UTF-16");

}

对 p@sSW0rd 进行加密,效果如下:

加密前:

f77ee6fb1154b7973ade823d5ff9f0e9.png

加密后:

4e6838926d5997ad26d429d627a1b07c.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/202885
推荐阅读
相关标签
  

闽ICP备14008679号