有一种是字符串反转,反转两次即可解密,可加密性不高,这一种是用盐加密

md5加密是不可反转的所以诞生了以下工具类

import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.binary.Base32;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.binary.Hex;import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;public class CryptoUtil {private static final String DEFAULT_SECRET_KEY1 = "?:P)(OL><KI*&UJMNHY^%TGBVFR$#EDCXSW@!QAZ";private static final String DEFAULT_SECRET_KEY2 = "1qaz2wsx3edc4rfv5tgb6yhn7ujm8ik,9ol.0p;/";private static final String DEFAULT_SECRET_KEY3 = "!QAZ@WSX#EDC$RFV%TGB^YHN&UJM*IK<(OL>)P:?";private static final String DEFAULT_SECRET_KEY = DEFAULT_SECRET_KEY1;public static final String SALT = "hang";private static final String DES = "DES";private static final Base32 base32 = new Base32();private static Key DEFAULT_KEY = null;static {DEFAULT_KEY = obtainKey(DEFAULT_SECRET_KEY);}/*** 获得key**/private static Key obtainKey(String key) {if (key == null) {return DEFAULT_KEY;}KeyGenerator generator = null;try {generator = KeyGenerator.getInstance(DES);} catch (NoSuchAlgorithmException e) {e.printStackTrace();}SecureRandom random = null;try {random = SecureRandom.getInstance("SHA1PRNG");random.setSeed(key.getBytes());} catch (NoSuchAlgorithmException e) {e.printStackTrace();}generator.init(random);Key key1 = generator.generateKey();generator = null;return key1;}/*** 加密String明文输入,String密文输出*/private static String encode(String str) {return encode64(null, str);}/*** 加密String明文输入,String密文输出*/public static String encode64(String key, String str) {return Base64.encodeBase64URLSafeString(obtainEncode(key, str.getBytes()));}/*** 加密String明文输入,String密文输出*/private static String encode32(String key, String str) {return base32.encodeAsString(obtainEncode(key, str.getBytes())).replaceAll("=", "");}/*** 加密String明文输入,String密文输出*/private static String encode16(String key, String str) {return Hex.encodeHexString(obtainEncode(key, str.getBytes()));}/*** 解密以String密文输入,String明文输出*/private static String decode(String str) {return decode64(null, str);}/*** 解密以String密文输入,String明文输出*/public static String decode64(String key, String str) {return new String(obtainDecode(key, Base64.decodeBase64(str)));}/*** 解密以String密文输入,String明文输出*/private static String decode32(String key, String str) {return new String(obtainDecode(key, base32.decode(str)));}/*** 解密以String密文输入,String明文输出*/private static String decode16(String key, String str) {try {return new String(obtainDecode(key, Hex.decodeHex(str.toCharArray())));} catch (DecoderException e) {e.printStackTrace();}return null;}/*** 加密以byte[]明文输入,byte[]密文输出*/private static byte[] obtainEncode(String key, byte[] str) {byte[] byteFina = null;Cipher cipher;try {Key key1 = obtainKey(key);cipher = Cipher.getInstance(DES);cipher.init(Cipher.ENCRYPT_MODE, key1);byteFina = cipher.doFinal(str);} catch (Exception e) {e.printStackTrace();} finally {cipher = null;}return byteFina;}/*** 解密以byte[]密文输入,以byte[]明文输出*/private static byte[] obtainDecode(String key, byte[] str) {Cipher cipher;byte[] byteFina = null;try {Key key1 = obtainKey(key);cipher = Cipher.getInstance(DES);cipher.init(Cipher.DECRYPT_MODE, key1);byteFina = cipher.doFinal(str);} catch (Exception e) {e.printStackTrace();} finally {cipher = null;}return byteFina;}public static String encodeSrc(String src) {String m = encode64(DEFAULT_SECRET_KEY2 + SALT, src);String saltm = SALT + ";" + m;String result = encode32(DEFAULT_SECRET_KEY3, saltm);return result;}public static String decodeTarget(String target) {String n = decode32(DEFAULT_SECRET_KEY3, target);String key = n.split(";")[0];String m = n.split(";")[1];String result = decode64(DEFAULT_SECRET_KEY2 + key, m);return result;}}

java加密字符串,可解密相关推荐

  1. python能解密java的_实现Java加密,Python解密的RSA非对称加密算法功能

    摘要 因为最近业务需要使用到openssl的rsa非对称加密算法,研究了下它的使用方式,但是特殊在于前端分IOS和android两端,所以前端部门要求使用java给他们做一个加密工具包,但是因为服务端 ...

  2. java python rsa加密_实现Java加密,Python解密的RSA非对称加密算法功能

    摘要 因为最近业务需要使用到openssl的rsa非对称加密算法,研究了下它的使用方式,但是特殊在于前端分IOS和android两端,所以前端部门要求使用java给他们做一个加密工具包,但是因为服务端 ...

  3. 2023.2 新方案 java代码混淆 java加密 字符串加密

    Java字节码可以反编译,特别是创业公司,很好的项目很容易被别人破解反编译,造成很严重的损失,所以本混淆方案能很好的保护源码,而且在不断迭代,增强混淆效果,异常问题处理,达到保护项目的目的: 本次升级 ...

  4. java 字符串 加密_如何用JAVA实现字符串简单加密解密?

    展开全部 java加密字符串可以使用des加密算法62616964757a686964616fe4b893e5b19e31333363376462,实例如下: package test; import ...

  5. java 字符串加密_如何用JAVA实现字符串简单加密解密?

    展开全部 java加密字符串可以使用des加密算法,实例如62616964757a686964616fe59b9ee7ad9431333337616636下: package test; import ...

  6. openresty Aes解密 Java 加密

    之前提到.会采用openresty作为网关进行加解密.在实践的过程中.第一步就要调整代码了.我们之前Java采用的是AES/CBC/PKCS5Padding的填充方式,而openresty的aes.l ...

  7. Java实现 字符串加密 输入字符串进行简单的位运算,输出加密或解密后的字符串

    Java实现 字符串加密 输入字符串进行简单的位运算,输出加密或解密后的字符串 具体代码如下: package package2;import java.util.Scanner;/*** 加密可以这 ...

  8. java 异或加密 字符串_Java 字符串的加密与解密

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 为了保证程序的安全,经常需要用到数据加密的方法.Java 中提供了专门用于加密运算的类和接口. 除了使用加密类和接口外,还可以通过多种方式实现字符串的加密 ...

  9. java sha256 解密_如何解密SHA-256加密字符串?

    如何解密SHA-256加密字符串? 我有一个使用以下方法编码的字符串,有没有办法将此字符串解码回原始值?谢谢.public synchronized String encode(String pass ...

最新文章

  1. java bean spring_Java+Spring+Bean+注入方式
  2. 【PC工具】传说中最好的编程手册管理软件Zeal,支持194种编程文档,学习编程语法查阅必备工具...
  3. Python3.5 Day1作业:实现用户密码登录,输错三次锁定。
  4. c/c++反混淆方法
  5. Hive的四种存储方式Stored as ?
  6. spring security 2.x HttpSessionEventPublisher 以及listener配置
  7. hadoop集群配置SSH免登陆
  8. 嵌入式IOEServer终于开发完成,相应的问题作一个系统阐述(WINCE)
  9. fpt指的是什么_ftp是指的什么?
  10. css vue 内联_Vue学习之路第十二篇:为页面元素设置内联样式
  11. 日语——动词的各种变形
  12. 高效率科研神器——小软件、大能量
  13. Mybatis中如何实现一对一,一对多的关联查询?
  14. 数据库课设--基于Python+MySQL的餐厅点餐系统
  15. linux swift开发环境,Linux平台swift语言开发学习环境搭建
  16. CRM适用于什么企业?
  17. 文件操作 - 三元运算/chardet/文件操作r w/文件的操作方法
  18. iftop 查看带宽和网速
  19. 【python】CodingGames Shadows of the Knight - Episode 1
  20. C语言把字符转换为整数的方法和示例

热门文章

  1. Linux下的Keyboard子系统
  2. Kafka为什么速度那么快?
  3. vscode 配置php
  4. Android 动画之ScaleAnimation应用详解
  5. html 最初级学习笔记一
  6. 设计模式之Facade(外观)模式
  7. Linux 命令之 --[chattr]
  8. web.config总结
  9. 安装SQL SERVER 2000时提示:以前的某个程序安装已在安装计算机上创建挂起的文件操作。...
  10. C#使用ping命令