链接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. O/R关系的深入理解(转载)

    本文转载自aa8945163: http://aa8945163.iteye.com/blog/859713 什么是O/R Mapping? 广义上,ORM指的是面向对象的对象模型和关系型数据库的数据 ...

  2. Restful下的token认证方案

    Restful讲究一个无状态的特性(stateless),这就不能把一些例如登陆后的认证信息写进cookie的传统方式, 目前探索的是采用token的方式来进行权限的识别. 刚开始研究token的时候 ...

  3. E - 改革春风吹满地

    按顺时针或者逆时针顺序输入n个点,求输入点围城的多边形的面积.凸凹都可以计算. 模板 #include <iostream> #include <cstring> #inclu ...

  4. SQLI DUMB SERIES-18

    (1)对username和password无论怎么输入,都没有回显,再看题目,POST - Header Injection - Uagent field - Error based (基于错误的用户 ...

  5. 创建数组必须指定数组数目之new运算符避免这种限制

    typeName arrayName[arraySize] short months[12]; 表达式arraySize指定元素数目,他必须是整型常数或const值,也可以是常量表达式,即其中所有的值 ...

  6. 热更新-----为何使用lua进行热更

    事实上我们在安卓端是可以使用c#jit的,但是我们在ios上的代码是AOT(预先编译,静态编译)的,不能用c# jit(实时编译,即时编译). ios不能用c#热更是因为启动了CPU的No eXecu ...

  7. python 多进程的两种创建方式

    Python中使用线程有两种方式:函数或者用类来包装线程对象. 第一种---------函数 菜鸟教程的我没看懂,说说我自己懂的----看视频理解的 import time import thread ...

  8. mysql中的备份(backup)和恢复(recovery)

    (一)备份类型(backup type) 物理和逻辑备份(Physical Versus Logical Backup) 物理备份是指直接复制存储数据库内容的目录和文件,这种类型的备份适用于出现问题时 ...

  9. SQL盲注学习

    如果数据库运行返回结果时只反馈对错不会返回数据库当中的信息 此时可以采用逻辑判断是否正确的盲注来获取信息 盲注是不能通过直接显示的途径来获取数据库数据的方法 1.布尔盲注 2.时间盲注 3.报错型盲注 ...

  10. 试写foxit reader的ConvertToPDF功能的wrapper

    相比于直接fuzzing大型程序本身,针对程序的某一特定功能写wrapper后再fuzzing则要高效的多.网上搜了下,仅有两篇关于foxit reader的wrapper文章,一个用python,另 ...