java实现可逆加密算法
时间:2020-11-15 14:33:47|栏目:JAVA代码|点击: 次
很多加密包都提供复杂的加密算法,比如MD5,这些算法有的是不可逆的。
有时候我们需要可逆算法,将敏感数据加密后放在数据库或配置文件中,在需要时再再还原。
这里介绍一种非常简单的java实现可逆加密算法。
算法使用一个预定义的种子(seed)来对加密内容进行异或运行,解密只用再进行一次异或运算就还原了。
代码如下:
seed任意写都可以。
代码:
package cn.exam.signup.service.pay.util;
import java.math.BigInteger;
import java.util.Arrays;
public class EncrUtil {
private static final int RADIX = 16;
private static final String SEED = "0933910847463829232312312";
public static final String encrypt(String password) {
if (password == null)
return "";
if (password.length() == 0)
return "";
BigInteger bi_passwd = new BigInteger(password.getBytes());
BigInteger bi_r0 = new BigInteger(SEED);
BigInteger bi_r1 = bi_r0.xor(bi_passwd);
return bi_r1.toString(RADIX);
}
public static final String decrypt(String encrypted) {
if (encrypted == null)
return "";
if (encrypted.length() == 0)
return "";
BigInteger bi_confuse = new BigInteger(SEED);
try {
BigInteger bi_r1 = new BigInteger(encrypted, RADIX);
BigInteger bi_r0 = bi_r1.xor(bi_confuse);
return new String(bi_r0.toByteArray());
} catch (Exception e) {
return "";
}
}
public static void main(String args[]){
System.out.println(Arrays.toString(args));
if(args==null || args.length!=2) return;
if("-e".equals(args[0])){
System.out.println(args[1]+" encrypt password is "+encrypt(args[1]));
}else if("-d".equals(args[0])){
System.out.println(args[1]+" decrypt password is "+decrypt(args[1]));
}else{
System.out.println("args -e:encrypt");
System.out.println("args -d:decrypt");
}
}
}
运行以上代码:
[-e, 1234567890]
1234567890 encrypt password is 313233376455276898a5[-d, 313233376455276898a5]
313233376455276898a5 decrypt password is 1234567890
栏 目:JAVA代码
下一篇:解决idea 拉取代码出现的 “ Сannot Run Git Cannot identify version of git executable: no response“的问题
本文标题:java实现可逆加密算法
本文地址:http://www.codeinn.net/misctech/22914.html


阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2java中-jar 与nohup的对比
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7java读取excel文件的两种方法
- 8解析SpringSecurity+JWT认证流程实现
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机




