base64简单加密解密处理

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加密-》解密无效");
        }

    }
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容