zoukankan      html  css  js  c++  java
  • Android:DES加密

        private static final String KEY = "xxxxxx"; // KEY的字节长度必须超过24
        
        public DESUtil(){
            super();
        }
        
        /** DES加密  
         * @param str 要加密的内容
         */
        public String getDES(String str){
            if(TextUtils.isEmpty(str)){
                return null;
            }
            
            try {
                byte[] data = str.getBytes("UTF-8");
                byte[] key = KEY.getBytes();
                LogUtil.info("json", "length= " + key.length);
                
                return Base64.encodeToString(des3EncodeECB(key,data), Base64.DEFAULT);
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
            
            return null;
        }
    
        /**
         * ECB加密,不要IV
         * @param key 密钥
         * @param data 明文
         * @return Base64编码的密文
         * @throws Exception
         */
        private byte[] des3EncodeECB(byte[] key, byte[] data)
                throws Exception {
    
            Key deskey = null;
            DESedeKeySpec spec = new DESedeKeySpec(key);
            SecretKeyFactory keyfactory = SecretKeyFactory.getInstance("desede");
            deskey = keyfactory.generateSecret(spec);
    
            Cipher cipher = Cipher.getInstance("desede" + "/ECB/PKCS5Padding");
    
            cipher.init(Cipher.ENCRYPT_MODE, deskey);
            byte[] bOut = cipher.doFinal(data);
    
            return bOut;
        }
    
        /**
         * ECB解密,不要IV
         * @param key 密钥
         * @param data Base64编码的密文
         * @return 明文
         * @throws Exception
         */
        private byte[] ees3DecodeECB(byte[] key, byte[] data)
                throws Exception {
    
            Key deskey = null;
            DESedeKeySpec spec = new DESedeKeySpec(key);
            SecretKeyFactory keyfactory = SecretKeyFactory.getInstance("desede");
            deskey = keyfactory.generateSecret(spec);
    
            Cipher cipher = Cipher.getInstance("desede" + "/ECB/PKCS5Padding");
    
            cipher.init(Cipher.DECRYPT_MODE, deskey);
    
            byte[] bOut = cipher.doFinal(data);
    
            return bOut;
    
        }
    
        /**
         * CBC加密
         * @param key 密钥
         * @param keyiv IV
         * @param data 明文
         * @return Base64编码的密文
         * @throws Exception
         */
        private byte[] des3EncodeCBC(byte[] key, byte[] keyiv, byte[] data)
                throws Exception {
    
            Key deskey = null;
            DESedeKeySpec spec = new DESedeKeySpec(key);
            SecretKeyFactory keyfactory = SecretKeyFactory.getInstance("desede");
            deskey = keyfactory.generateSecret(spec);
    
            Cipher cipher = Cipher.getInstance("desede" + "/CBC/PKCS5Padding");
            IvParameterSpec ips = new IvParameterSpec(keyiv);
            cipher.init(Cipher.ENCRYPT_MODE, deskey, ips);
            byte[] bOut = cipher.doFinal(data);
    
            return bOut;
        }
    
        /**
         * CBC解密
         * @param key 密钥
         * @param keyiv IV
         * @param data Base64编码的密文
         * @return 明文
         * @throws Exception
         */
        private byte[] des3DecodeCBC(byte[] key, byte[] keyiv, byte[] data)
                throws Exception {
    
            Key deskey = null;
            DESedeKeySpec spec = new DESedeKeySpec(key);
            SecretKeyFactory keyfactory = SecretKeyFactory.getInstance("desede");
            deskey = keyfactory.generateSecret(spec);
    
            Cipher cipher = Cipher.getInstance("desede" + "/CBC/PKCS5Padding");
            IvParameterSpec ips = new IvParameterSpec(keyiv);
    
            cipher.init(Cipher.DECRYPT_MODE, deskey, ips);
    
            byte[] bOut = cipher.doFinal(data);
    
            return bOut;
    
        }
  • 相关阅读:
    C#Ref和Out作用于引用对象时的理解
    Docker-.Net Core部署
    微服务-基于Grpc的进程通信-Protobuf-net.Grpc(4-3)
    微服务-基于Grpc的进程通信-Grpc服务注册与发现 (4-2)
    微服务-基于Grpc的进程通信-简单使用(4-1)
    ELK-Windows下系统安装(1)
    Visual Studio 2019中如何使用Git
    VS2019下载速度快完成时突然变得极慢
    Swagger 发布服务器导出Excel失败,本地导出没问题
    发布到服务器后导出Excel失败
  • 原文地址:https://www.cnblogs.com/gongcb/p/3274670.html
Copyright © 2011-2022 走看看