• java中加密解密工具类


    在工作中经常遇到需要加密、解密的场景。例如用户的手机号等信息,在保存到数据库的过程中,需要对数据进行加密。取出时进行解密。

    public class DEStool {
    
        private String sKey;
    
        public DEStool() {
            //默认构造函数提供默认密钥
            sKey = "des@#$12";
        }
    
        public DEStool(String securityKey) {
            if (securityKey.length() < 8) {
                throw new IllegalArgumentException("密钥长度至少8位");
            }
            this.sKey = securityKey;
        }
    
        private Cipher makeCipher() throws Exception{
            return Cipher.getInstance("DES");
        }
    
        private SecretKey makeKeyFactory() throws Exception{
            SecretKeyFactory des = SecretKeyFactory.getInstance("DES");
            SecretKey secretKey = des.generateSecret(new DESKeySpec(sKey.getBytes()));
            return secretKey;
        }
    
        public String encrypt(String text) throws Exception{
            Cipher cipher = makeCipher();
            SecretKey secretKey = makeKeyFactory();
            cipher.init(Cipher.ENCRYPT_MODE, secretKey);
            return new String(Base64.encodeBase64(cipher.doFinal(text.getBytes())));
        }
    
        public String decrypt(String text) throws Exception{
            Cipher cipher = makeCipher();
            SecretKey secretKey = makeKeyFactory();
            cipher.init(Cipher.DECRYPT_MODE, secretKey);
            return new String(cipher.doFinal(Base64.decodeBase64(text.getBytes())));
        }
    
        public static void main(String[] args) {
            DEStool tool = new DEStool("nice1234");
            String content = "中国";
            System.out.println("原文内容:"+content);
            String encrpt = null;
            try {
                encrpt = tool.encrypt(content);
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            System.out.println("加密后:"+encrpt + ", 长度=" + encrpt.length());
    
            String descript =null;
    
            try {
                descript = tool.decrypt(encrpt);
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            System.out.println("解密后:" + descript);
        }
    }
  • 相关阅读:
    SQL之mysql常用操作语句(入门级)
    总结了一些指针易出错的常见问题(七)
    C++之类和对象课后习题1
    SQL之50个常用的SQL语句
    SQL之经典SQL语句大全
    C语言之计算字符串最后一个单词的长度,单词以空格隔开
    spring之HttpInvoker
    Java之解压流(ZipInputStream)
    jetty之嵌入式开发
    java之压缩流(ZipOutputStream)
  • 原文地址:https://www.cnblogs.com/zhaopengcheng/p/7245230.html
Copyright © 2020-2023  润新知