链接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. ubuntu18.04LTS配置apache虚拟目录(基于端口)

    假设在用户目录下要新建两个虚拟目录web1,web2,分别对应端口8081,8082 $ cd ~ #切换到用户目录 $ mkdir www #新建www文件夹,以后新建的虚拟目录都放在该文件夹下 $ ...

  2. 20155208徐子涵《网络对抗》Exp9 Web安全基础

    20155208徐子涵<网络对抗>Exp9 Web安全基础 实验要求 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 最后一次了,没有选择尝试免考项目 ...

  3. Introduction tp Operating System

    一.虚拟化 为了让用户告诉操作系统如何利用虚拟机功能,OS提供给应用程序一些接口——系统调用,也会说提供了一个标准库. CPU通过分时达到虚拟化. 内存物理模型只是一个字节数组,读写修改需要制定地址. ...

  4. C++中const的用法

    1.const修饰普通变量和指针 (1).const修饰普通变量 其写法有2种:a.const type value;   b.type const value; 这两种写法本质上是一样的.其含义是: ...

  5. Android Studio删除依赖

    遇到报错 就是要删 ①在build.gradle中删除对应依赖代码(注释了,但是没用??) ②检查工程中的依赖 点击"file">>“project structure ...

  6. js 文件异步上传 显示进度条 显示上传速度 预览文件

    通常文件异步提交有几个关键 1.支持拖拽放入文件.2.限制文件格式.3.预览图片文件.4.上传进度,速度等,上传途中取消上传.5.数据与文件同时上传 现在开始笔记: 需要一个最基础的元素<inp ...

  7. CSS 字体交互特效

    一.鼠标悬浮时,字体颜色从左到右依次变化<!DOCTYPE html> <html> <head> <meta charset="utf-8&quo ...

  8. Actifio OnVault 8.0

  9. jenkins如何获取gitlab上的代码

    如何安装jenkins和gitlab我就不重复了,请自行搜索我的博客 那么,jenkins如何获取gitlab上的代码呢? 具体配置步骤如下 1.在gitlab上配置个人访问令牌.注意事项:姓名那里需 ...

  10. Shell脚本出现$'\r': command not found

    Centos7下执行shell脚本报错如下 [root@ip---- ~]# sh install_zabbix_agent.sh install_zabbix_agent.: $'\r': comm ...