正常来讲加密基本上永远都要伴随着解密,所谓的加密或者解密,往往都需要有一些规则,在JDK1.8开始,提供有新的加密处理操作类,Base64处理类
--Base64类
  在该类之中存在两个内部类:Base64.Base64.Decoder以及Base64.enBase64.Encoder,分别进行加密和解密处理
进行加密处理:byte[] decode(byte[] src)  
进行解密处理:byte[] encode(byte[] src)  
--范例:进行数据加密示例

 public class MyBase64 {
public static void main(String[] args) {
String message = "你好,这是一条消息"; //要发送的消息内容
Base64.getEncoder().encode(message.getBytes()); //数据加密
System.out.println(new String(Base64.getEncoder().encode(message.getBytes())));
}
}

--运行结果

5L2g5aW9LOi/meaYr+S4gOadoea2iOaBrw==

Process finished with exit code 0

--进行解密操作

public class MyBase64 {
public static void main(String[] args) {
String message = "你好,这是一条消息"; //要发送的消息内容
String encoder = new String(Base64.getEncoder().encode(message.getBytes()));//数据加密
String decode = new String(Base64.getDecoder().decode(encoder));
System.out.println(decode);
}
}

--我们知道Base64是一个公版的加密和解密算法,所以直接使用Base64进行数据的加密和解密并不安全,所以最好的做法是使用盐值操作,所谓盐值操作就是在所需要加密的字符串信息中追加一个盐值

 public class MyBase64 {
public static void main(String[] args) {
String salt = "dnsaojnui"; //无序输入的盐值
String message = "你好,这是一条消息" + "{" + salt + "}"; //要发送的消息内容
String encoder = new String(Base64.getEncoder().encode(message.getBytes()));//数据加密
String decode = new String(Base64.getDecoder().decode(encoder));
System.out.println(decode);
}
}

--但是盐值任然是明文规定的,这样实际效果也并不是很好,最好的做法则是多次加密

 package 常用类库.base64加密与解密;

 import java.util.Base64;

 /**
* @author : S K Y
* @version :0.0.1
*/
class BaseUtil { //加密的盐值与此处对外不公布
private static final String SALT = "dasjidnas"; //公版的盐值
private static final int REPEAT = 5; ///加密的次数 /**
* 加密处理
*
* @param password 要加密的字符串密码数据,需要与盐值配合
* @return 加密后的数据
*/
public static String encode(String password) {
password = password + "{" + SALT + "}";
byte[] bytes = password.getBytes();
for (int i = 0; i < REPEAT; i++) {
bytes = Base64.getEncoder().encode(bytes);
}
return new String(bytes);
} /**
* 解密
*
* @param needDecode 需要解密的数据
* @return 解密的结果
*/
public static String decode(String needDecode) {
byte[] bytes = needDecode.getBytes();
for (int i = 0; i < REPEAT; i++) {
bytes = Base64.getDecoder().decode(bytes);
}
return new String(bytes).replaceAll("\\{\\w+}", "");
}
} public class MyBase64 {
public static void main(String[] args) {
String password = "qwer123456";
String encode = BaseUtil.encode(password);
System.out.println(encode);
System.out.println(BaseUtil.decode(encode));
}
}

--运行结果

VjFSR2IyRXlTa2hVYmtaVFYwZDRUMXBYZUVabFJsSjBUbFJDYUUxWGVGcFdSelZIWVVaWmVGTnFSbGhXYldoUVZERkZPVkJSUFQwPQ==
qwer123456 Process finished with exit code 0

--此外,最好的方法是使用2-3中加密算法,同时得到一些完全不可解密的加密结果

Base64加密工具的更多相关文章

  1. Base64加密工具-iBlogs

    简易的Base64加密工具开发步骤 1.编写Java测试桩 import java.io.BufferedReader; import java.io.IOException; import java ...

  2. java中Base64的加密工具封装

    Base64加密作为最简单普遍的加密方式(其实只能称为编码方式),应用场景众多比如秘钥,安全证书,也应用在其他的加密方式中或与其他加密方式进行嵌套使用 可以通过引用sun.misc来使用,也可以自己手 ...

  3. 使用jframe编写一个base64加密解密工具

    该工具可以使用exe4j来打包成exe工具(如何打包自己百度) 先上截图功能 运行main方法后,会弹出如下窗口 输入密文 然后点击解密,在点格式化 代码分享 package tools;import ...

  4. Base64加密解密工具类

    使用Apache commons codec类Base64进行加密解密 maven依赖 <dependency> <groupId>commons-codec</grou ...

  5. App开发流程之加密工具类

    科技优家 2016-09-08 18:10 从这篇记录开始,记录的都算是干货了,都是一些编程日常的积累. 我建议先将基础的工具加入项目,后续的开发效率会呈指数增长.如果在专注功能开发过程中,才发现缺少 ...

  6. 主题:Android、iPhone和Java三个平台一致的加密工具

    先前一直在做安卓,最近要开发iPhone客户端,这其中遇到的最让人纠结的要属Java.Android和iPhone三个平台加解密不一致的问题.因为手机端后台通常是用JAVA开发的Web Service ...

  7. 加密工具类 - CryptoUtils.java

    加密工具类,包含MD5,BASE64,SHA,CRC32的加密与解密方法. 源码如下:(点击下载  - CryptoUtils.java.commons-io-2.4.jar.commons-code ...

  8. Android、iPhone和Java三个平台一致的加密工具

    先前一直在做安卓,最近要开发iPhone客户端,这其中遇到的最让人纠结的要属Java.Android和iPhone三个平台加解密不一致的问题. 因为手机端后台通常是用JAVA开发的Web Servic ...

  9. cryptopp开源库的使用(二):base64加密

    很多时候我只是优秀工具的使用者,优秀的工具用好了才能发挥作用 最近使用cryptopp的base64对压缩后的zip文件内容进行加密遇到了问题. 首先zip压缩没问题,可是最后得到的base64字符串 ...

随机推荐

  1. pytest--命令行参数

    使用pytest --help可以查看全部选项 ​ -v:pytest -v 说明:可以输出用例更加详细的执行信息,比如用例所在的文件及用例名称等 -q(--quiet) 该选项的作用与-v/--ve ...

  2. mysql数据库操作指令汇总

    1.mysql -u root -p 登录数据库 2.表结构相同两表数据对拷 insert into A select * from B(插入全部字段数据)   insert into A(字段1.字 ...

  3. Git相关命令整理

    git config --global user.name  //配置姓名git config --global user.email  //配置邮箱git config --list  //查看配置 ...

  4. Java 时间类 Date 和 Calendar

    在项目中获取一个yyyy-MM-dd HH:mm:ss格式的时间字符串 package org.htsg.kits; import java.text.SimpleDateFormat; import ...

  5. 对象名 XXX 无效。

    对象名 XXX 无效. 首先检查自己数据库连接字符串是否正确!!! 已经有过好几次这样的错误了,还是不长记性,特意记下

  6. smbpasswd - Samba加密的口令文件。

    总览 SYNOPSIS smbpasswd 描述 DESCRIPTION 此文件是 Samba(7) 套件的一部分. smbpasswd是Samba加密的口令文件.文件中包含了用户名,UNIX用户ID ...

  7. 解决Minikube start卡住的方法

    安装与问题 在mac上安装minikube对k8s进行学习,根据官方Quick Start brew cask install minikube 就可以完成minikube的安装 在安装前需要安装vi ...

  8. fastjson 1.1.1填坑

    java封装Echart数据模型 xAxis  yAxis 属性  转json赋值失败..换名即可 解决办法:升级1.2.2后即可

  9. Ehcahe独立使用

    <?xml version="1.0" encoding="utf-8"?><ehcache xmlns:xsi="http://w ...

  10. spring boot启动异常:java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver

    项目启动时提示:java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represen ...