Java Base64位加密和解密(包括其他加密参考)
链接https://blog.csdn.net/longguangfu8/article/details/78948213
常用加密解密算法【RSA、AES、DES、MD5】介绍和使用
https://blog.csdn.net/u013565368/article/details/53081195
java 加密工具类(MD5、RSA、AES等加密方式
https://blog.csdn.net/u011659172/article/details/50627903
关于base64编码Encode和Decode编码的几种方式
Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便。在实际应用上,Base64除了能将Binary资料可视化之外,也常用来表示字串加密过后的内容。如果要使用Java 程式语言来实作Base64的编码与解码功能,可以参考本篇文章的作法。
早期作法
早期在Java上做Base64的编码与解码,会使用到JDK里sun.misc套件下的BASE64Encoder和BASE64Decoder这两个类别,用法如下:
- final BASE64Encoder encoder = new BASE64Encoder();
- final BASE64Decoder decoder = new BASE64Decoder();
- final String text = "字串文字";
- final byte[] textByte = text.getBytes("UTF-8");
- //编码
- final String encodedText = encoder.encode(textByte);
- System.out.println(encodedText);
- //解码
- System.out.println(new String(decoder.decodeBuffer(encodedText), "UTF-8"));
- final BASE64Encoder encoder = new BASE64Encoder();
- final BASE64Decoder decoder = new BASE64Decoder();
- final String text = "字串文字";
- final byte[] textByte = text.getBytes("UTF-8");
- //编码
- final String encodedText = encoder.encode(textByte);
- System.out.println(encodedText);
- //解码
- System.out.println(new String(decoder.decodeBuffer(encodedText), "UTF-8"));
从以上程式可以发现,在Java用Base64一点都不难,不用几行程式码就解决了!只是这个sun.mis c套件所提供的Base64功能,编码和解码的效率并不太好,而且在以后的Java版本可能就不被支援了,完全不建议使用。
Apache Commons Codec作法
Apache Commons Codec有提供Base64的编码与解码功能,会使用到org.apache.commons.codec.binary套件下的Base64类别,用法如下:
- final Base64 base64 = new Base64();
- final String text = "字串文字";
- final byte[] textByte = text.getBytes("UTF-8");
- //编码
- final String encodedText = base64.encodeToString(textByte);
- System.out.println(encodedText);
- //解码
- System.out.println(new String(base64.decode(encodedText), "UTF-8"));
- final Base64 base64 = new Base64();
- final String text = "字串文字";
- final byte[] textByte = text.getBytes("UTF-8");
- //编码
- final String encodedText = base64.encodeToString(textByte);
- System.out.println(encodedText);
- //解码
- System.out.println(new String(base64.decode(encodedText), "UTF-8"));
以上的程式码看起来又比早期用sun.mis c套件还要更精简,效能实际执行起来也快了不少。缺点是需要引用Apache Commons Codec,很麻烦。
Java 8之后的作法
Java 8的java.util套件中,新增了Base64的类别,可以用来处理Base64的编码与解码,用法如下:
- final Base64.Decoder decoder = Base64.getDecoder();
- final Base64.Encoder encoder = Base64.getEncoder();
- final String text = "字串文字";
- final byte[] textByte = text.getBytes("UTF-8");
- //编码
- final String encodedText = encoder.encodeToString(textByte);
- System.out.println(encodedText);
- //解码
- System.out.println(new String(decoder.decode(encodedText), "UTF-8"));
- final Base64.Decoder decoder = Base64.getDecoder();
- final Base64.Encoder encoder = Base64.getEncoder();
- final String text = "字串文字";
- final byte[] textByte = text.getBytes("UTF-8");
- //编码
- final String encodedText = encoder.encodeToString(textByte);
- System.out.println(encodedText);
- //解码
- System.out.println(new String(decoder.decode(encodedText), "UTF-8"));
与sun.mis c套件和Apache Commons Codec所提供的Base64编解码器来比较的话,Java 8提供的Base64拥有更好的效能。实际测试编码与解码速度的话,Java 8提供的Base64,要比sun.mis c套件提供的还要快至少11倍,比Apache Commons Codec提供的还要快至少3倍。因此在Java上若要使用Base64,这个Java 8底下的java .util套件所提供的Base64类别绝对是首选!
Java Base64位加密和解密(包括其他加密参考)的更多相关文章
- java实现DES加密与解密,md5加密
很多时候要对秘要进行持久化加密,此时的加密采用md5.采用对称加密的时候就采用DES方法了 import java.io.IOException; import java.security.Messa ...
- js的常见的三种密码加密方式-MD5加密、Base64加密和解密和sha1加密详解总结
写前端的时候,很多的时候是避免不了注册这一关的,但是一般的注册是没有任何的难度的,无非就是一些简单的获取用户输入的数据,然后进行简单的校验以后调用接口,将数据发送到后端,完成一个简单的注册的流程,那么 ...
- PHP 识别 java 8位 des 加密和 解密方式
代码及使用说明: <?php /** *PHP 识别 java 8位密钥的加密和解密方式 *@desc 加密方式 通用 */ class DES { var $key; var $iv; //偏 ...
- 【转】Java Cipher类 DES算法(加密与解密)
Java Cipher类 DES算法(加密与解密) 1.加密解密类 import java.security.*; import javax.crypto.*; import java.io.*; / ...
- iOS开发之 AES+Base64数据混合加密与解密
2016-04-08 09:03 编辑: liubinqww 分类:iOS开发 来源:liubinqww 投稿 4 889 "APP的数据安全已经牵动着我们开发者的心,简单的MD5/ ...
- 记录新项目中遇到的技术及自己忘记的技术点【DES加密解密,MD5加密,字符串压缩、解压,字符串截取等操作】
一.DES加密.解密 #region DES加密解密 /// <summary> /// 进行DES加密 /// </summary> /// <param name=& ...
- params关键字、工具辅助类与、加密与解密
一.params关键字 在C#中如果给方法的参数加上关键字params则会形成可变参数,在传递时可以是0-n个对象. 示例: using System; using System.Collection ...
- 循序渐进学.Net Core Web Api开发系列【16】:应用安全续-加密与解密
系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 应用安全除 ...
- 加密与解密 Sytem.Security.CryptoGraphy
一.Hash加密,使用HashAlgorithm哈希算法类的派生类 HashAlgorithm派生类包括: KeyedHashAlgorithm: 显示所有加密哈希算法实现均必须从中派生的抽象类. M ...
随机推荐
- 使用command line测试网速
wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py --no ...
- jmeter 写正则表达式
():括起来的部分就是要提取的. .:匹配任何字符串. +:一次或多次. ?:不要太贪婪,在找到第一个匹配项后停止. 需要根据要取的数据取值 jt: eyJhbGciOiJSUzI1NiJ9.ey ...
- Go获取美元实时汇率
package main import ( "encoding/json" "fmt" "io/ioutil" "net/http ...
- python基础(九)
一.私有 class DB: port = 3306 #类变量 def __init__(self): self.host = '127.0.0.1' self.__user = 'root' #实例 ...
- Ajax的工作原理以及优缺点
Ajax的工作原理 : 相当于在客户端与服务端之间加了一个抽象层(Ajax引擎),使用户请求和服务器响应异步化,并不是所有的请求都提交给服务器,像一些数据验证和数据处理 都交给Ajax引擎来完成,只有 ...
- Python的内置方法——补充
七 __setitem__,__getitem__,__delitem__ class Foo: def __init__(self,name): self.name=name def __getit ...
- Python 汉诺塔
在汉诺塔游戏中,有三个分别命名为A.B.C得塔座,几个大小各不相同,从小到大一次编号得圆盘,每个原盘中间有一个小孔.最初,所有得圆盘都在A塔座上,其中最大得圆盘在最下面,然后是第二大,以此类推. 游戏 ...
- Go Example--json
package main import ( "encoding/json" "fmt" "os" ) type Response1 stru ...
- 芯灵思Sinlinx A64 开发板移植SQLite3
开发平台 芯灵思Sinlinx A64 内存: 1GB 存储: 4GB 开发板详细参数 https://m.tb.cn/h.3wMaSKm 开发板交流群 641395230 首先到 http://ww ...
- POJ3208 Apocalypse Someday
题意 Language:Default Apocalypse Someday Time Limit: 1000MS Memory Limit: 131072K Total Submissions: 2 ...