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简单加密解密处理
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- aes加密解密:1、安装crypto-js: npm install crypto-js --save-dev2...
- 前言由于接口请求需要将请求内容加密再传输,其中一部就是讲内容进行base64编码,然后请求回来的数据也进行同样的b...
- 本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的...