package com.work.sign;
import java.util.Base64;
import java.util.Random;
/**
* 加密工具类
*/
public class EncryptionOperation {
/**
* 最简单的base64加密解密
* @param str 待base64加密的字符串
* @return 加密串
*/
public String encryptionBase64(String str) {
//加密操作
String encodiString = new String(Base64.getEncoder().encode(str.getBytes()));
return encodiString;
}
/**
* 最简单的base64解密
* @param str 待base64解密的字符串
* @return 解密串
*/
public String decryptBase64(String str) {
//解密操作
String oldString = new String(Base64.getDecoder().decode(str));
return oldString;
}
/**
* 字母大小写转换
* @param str 需要大/小写互换字符串
* @return 大小写转换串
*/
public String exChange(String str){
StringBuffer sb = new StringBuffer();
if(str!=null){
for(int i=0;i<str.length();i++){
char c = str.charAt(i);
if(Character.isUpperCase(c)){
sb.append(Character.toLowerCase(c));
}else if(Character.isLowerCase(c)){
sb.append(Character.toUpperCase(c));
}else{
sb.append(c);
}
}
}
return sb.toString();
}
/**
* 创造大/小写加密字符串,保存数组
* @param a 创造a组加密串
* @param b 含有b个大/小写字母的串
* @return 盐数组
*/
public String[] saveSalt(int a,int b){
//存放加密盐数组
String[] salt = new String[a];
Random r = new Random();
for(int z =0 ;z < a;z++) {
//大/小写字符串加密串
String code = "";
for (int i = 0; i < b; ++i) {
int temp = r.nextInt(52);
char x = (char) (temp < 26 ? temp + 97 : (temp % 26) + 65);
//控制第一位为小写字母
if(i == 0 && Character.isUpperCase(x)){
x = Character.toLowerCase(x);
}
code += x;
}
salt[z] = code;
}
return salt;
}
public static void main(String[] args) {
String name = "鸿涛";
EncryptionOperation encryptionOperation = new EncryptionOperation();
//存放盐数组
String[] salt = null;
System.out.println("未加密串:"+name);
//生成的盐存放数组
salt = encryptionOperation.saveSalt(1,10);
System.out.println("base64加密串:"+salt[0]+encryptionOperation.encryptionBase64(name));
//base64加盐字符串
String namebase64 = encryptionOperation.encryptionBase64(name);
//头部加密
String addSalt = salt[0]+namebase64;
//全串二次加密
addSalt = encryptionOperation.exChange(addSalt);
System.out.println("加盐base64加密串:"+addSalt);
//字段解密去盐
String reduceSalt = encryptionOperation.exChange(addSalt);
//解密去头部盐
reduceSalt = reduceSalt.substring(10,reduceSalt.length());
System.out.println("base64去盐串:"+reduceSalt);
//解密串
reduceSalt = encryptionOperation.decryptBase64(reduceSalt);
System.out.println("base64解密串:"+reduceSalt);
if(name.equals(reduceSalt)){
System.out.println("base64加密-》解密有效");
}else{
System.out.println("base64加密-》解密无效");
}
}
}
base64简单加密解密处理
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- aes加密解密:1、安装crypto-js: npm install crypto-js --save-dev2...
- 前言由于接口请求需要将请求内容加密再传输,其中一部就是讲内容进行base64编码,然后请求回来的数据也进行同样的b...
- 本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的...