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);
        }
    }
  • 相关阅读:
    算法
    算法
    算法
    算法
    算法
    【PAT】B1064 朋友数(20 分)
    【PAT】B1065 单身狗(25 分)
    【PAT】B1066 图像过滤(15 分)
    【PAT】B1067 试密码(20 分)
    【PAT】B1068 万绿丛中一点红(20 分)
  • 原文地址:https://www.cnblogs.com/zhaopengcheng/p/7245230.html
Copyright © 2011-2022 走看看