zoukankan      html  css  js  c++  java
  • 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);
        }
    }
  • 相关阅读:
    java基础之冒泡排序
    java基础之HashSet如何保证对象的唯一性
    java基础之日期时间工具类
    java基础之抽象类和接口的区别
    java tomcat报错: Starting Tomcat v7.0 Server at localhost' has encountered a problem问题
    [bzoj 4196][NOI 2015]软件包管理器
    [bzoj 4034][HAOI 2015]树上操作
    [bzoj 1012][JSOI2008]最大数maxnumber
    详解Trie
    [bzoj 1047][HAOI2007]理想的正方形
  • 原文地址:https://www.cnblogs.com/zhaopengcheng/p/7245230.html
Copyright © 2011-2022 走看看