链接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这两个类别,用法如下:

  1.  
    final BASE64Encoder encoder = new BASE64Encoder();
  2.  
    final BASE64Decoder decoder = new BASE64Decoder();
  3.  
    final String text = "字串文字";
  4.  
    final byte[] textByte = text.getBytes("UTF-8");
  5.  
    //编码
  6.  
    final String encodedText = encoder.encode(textByte);
  7.  
    System.out.println(encodedText);
  8.  
    //解码
  9.  
    System.out.println(new String(decoder.decodeBuffer(encodedText), "UTF-8"));
  10.  
     
  11.  
    final BASE64Encoder encoder = new BASE64Encoder();
  12.  
    final BASE64Decoder decoder = new BASE64Decoder();
  13.  
    final String text = "字串文字";
  14.  
    final byte[] textByte = text.getBytes("UTF-8");
  15.  
    //编码
  16.  
    final String encodedText = encoder.encode(textByte);
  17.  
    System.out.println(encodedText);
  18.  
     
  19.  
    //解码
  20.  
    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类别,用法如下:

  1.  
    final Base64 base64 = new Base64();
  2.  
    final String text = "字串文字";
  3.  
    final byte[] textByte = text.getBytes("UTF-8");
  4.  
    //编码
  5.  
    final String encodedText = base64.encodeToString(textByte);
  6.  
    System.out.println(encodedText);
  7.  
    //解码
  8.  
    System.out.println(new String(base64.decode(encodedText), "UTF-8"));
  9.  
     
  10.  
    final Base64 base64 = new Base64();
  11.  
    final String text = "字串文字";
  12.  
    final byte[] textByte = text.getBytes("UTF-8");
  13.  
    //编码
  14.  
    final String encodedText = base64.encodeToString(textByte);
  15.  
    System.out.println(encodedText);
  16.  
    //解码
  17.  
    System.out.println(new String(base64.decode(encodedText), "UTF-8"));

以上的程式码看起来又比早期用sun.mis c套件还要更精简,效能实际执行起来也快了不少。缺点是需要引用Apache Commons Codec,很麻烦。

Java 8之后的作法

Java 8的java.util套件中,新增了Base64的类别,可以用来处理Base64的编码与解码,用法如下:

  1.  
    final Base64.Decoder decoder = Base64.getDecoder();
  2.  
    final Base64.Encoder encoder = Base64.getEncoder();
  3.  
    final String text = "字串文字";
  4.  
    final byte[] textByte = text.getBytes("UTF-8");
  5.  
    //编码
  6.  
    final String encodedText = encoder.encodeToString(textByte);
  7.  
    System.out.println(encodedText);
  8.  
    //解码
  9.  
    System.out.println(new String(decoder.decode(encodedText), "UTF-8"));
  10.  
     
  11.  
    final Base64.Decoder decoder = Base64.getDecoder();
  12.  
    final Base64.Encoder encoder = Base64.getEncoder();
  13.  
    final String text = "字串文字";
  14.  
    final byte[] textByte = text.getBytes("UTF-8");
  15.  
    //编码
  16.  
    final String encodedText = encoder.encodeToString(textByte);
  17.  
    System.out.println(encodedText);
  18.  
    //解码
  19.  
    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位加密和解密(包括其他加密参考)的更多相关文章

  1. java实现DES加密与解密,md5加密

    很多时候要对秘要进行持久化加密,此时的加密采用md5.采用对称加密的时候就采用DES方法了 import java.io.IOException; import java.security.Messa ...

  2. js的常见的三种密码加密方式-MD5加密、Base64加密和解密和sha1加密详解总结

    写前端的时候,很多的时候是避免不了注册这一关的,但是一般的注册是没有任何的难度的,无非就是一些简单的获取用户输入的数据,然后进行简单的校验以后调用接口,将数据发送到后端,完成一个简单的注册的流程,那么 ...

  3. PHP 识别 java 8位 des 加密和 解密方式

    代码及使用说明: <?php /** *PHP 识别 java 8位密钥的加密和解密方式 *@desc 加密方式 通用 */ class DES { var $key; var $iv; //偏 ...

  4. 【转】Java Cipher类 DES算法(加密与解密)

    Java Cipher类 DES算法(加密与解密) 1.加密解密类 import java.security.*; import javax.crypto.*; import java.io.*; / ...

  5. iOS开发之 AES+Base64数据混合加密与解密

    2016-04-08 09:03 编辑: liubinqww 分类:iOS开发 来源:liubinqww 投稿 4 889     "APP的数据安全已经牵动着我们开发者的心,简单的MD5/ ...

  6. 记录新项目中遇到的技术及自己忘记的技术点【DES加密解密,MD5加密,字符串压缩、解压,字符串截取等操作】

    一.DES加密.解密 #region DES加密解密 /// <summary> /// 进行DES加密 /// </summary> /// <param name=& ...

  7. params关键字、工具辅助类与、加密与解密

    一.params关键字 在C#中如果给方法的参数加上关键字params则会形成可变参数,在传递时可以是0-n个对象. 示例: using System; using System.Collection ...

  8. 循序渐进学.Net Core Web Api开发系列【16】:应用安全续-加密与解密

    系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 应用安全除 ...

  9. 加密与解密 Sytem.Security.CryptoGraphy

    一.Hash加密,使用HashAlgorithm哈希算法类的派生类 HashAlgorithm派生类包括: KeyedHashAlgorithm: 显示所有加密哈希算法实现均必须从中派生的抽象类. M ...

随机推荐

  1. 使用command line测试网速

    wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py --no ...

  2. jmeter 写正则表达式

    ():括起来的部分就是要提取的. .:匹配任何字符串. +:一次或多次. ?:不要太贪婪,在找到第一个匹配项后停止.   需要根据要取的数据取值 jt: eyJhbGciOiJSUzI1NiJ9.ey ...

  3. Go获取美元实时汇率

    package main import ( "encoding/json" "fmt" "io/ioutil" "net/http ...

  4. python基础(九)

    一.私有 class DB: port = 3306 #类变量 def __init__(self): self.host = '127.0.0.1' self.__user = 'root' #实例 ...

  5. Ajax的工作原理以及优缺点

    Ajax的工作原理 : 相当于在客户端与服务端之间加了一个抽象层(Ajax引擎),使用户请求和服务器响应异步化,并不是所有的请求都提交给服务器,像一些数据验证和数据处理 都交给Ajax引擎来完成,只有 ...

  6. Python的内置方法——补充

    七 __setitem__,__getitem__,__delitem__ class Foo: def __init__(self,name): self.name=name def __getit ...

  7. Python 汉诺塔

    在汉诺塔游戏中,有三个分别命名为A.B.C得塔座,几个大小各不相同,从小到大一次编号得圆盘,每个原盘中间有一个小孔.最初,所有得圆盘都在A塔座上,其中最大得圆盘在最下面,然后是第二大,以此类推. 游戏 ...

  8. Go Example--json

    package main import ( "encoding/json" "fmt" "os" ) type Response1 stru ...

  9. 芯灵思Sinlinx A64 开发板移植SQLite3

    开发平台 芯灵思Sinlinx A64 内存: 1GB 存储: 4GB 开发板详细参数 https://m.tb.cn/h.3wMaSKm 开发板交流群 641395230 首先到 http://ww ...

  10. POJ3208 Apocalypse Someday

    题意 Language:Default Apocalypse Someday Time Limit: 1000MS Memory Limit: 131072K Total Submissions: 2 ...