zoukankan      html  css  js  c++  java
  • DES根据键值加密解密

    import java.io.IOException;
    import java.net.URLEncoder;
    import java.security.SecureRandom;

    import javax.crypto.Cipher;
    import javax.crypto.SecretKey;
    import javax.crypto.SecretKeyFactory;
    import javax.crypto.spec.DESKeySpec;

    import sun.misc.BASE64Decoder;
    import sun.misc.BASE64Encoder;

    public class DesUtil {

        private final static String DES = "DES";

        /**
         * 
         * Description 根据键值进行加密
         * 
    @param data
         * 
    @param key
         *            加密键byte数组
         * 
    @return
         * 
    @throws Exception
         
    */

        public static String encrypt(String data, String key) throws Exception {

            byte[] bt = encrypt(data.getBytes("utf-8"), key.getBytes());

            String strs = new BASE64Encoder().encode(bt);

            return strs;

        }

        /**
         * 
         * Description 根据键值进行解密
         * 
    @param data
         * 
    @param key
         *            加密键byte数组
         * 
    @return
         * 
    @throws IOException
         * 
    @throws Exception
         
    */

        public static String decrypt(String data, String key) throws IOException,Exception {
            if (data == null)
                return null;
            BASE64Decoder decoder = new BASE64Decoder();
            byte[] buf = decoder.decodeBuffer(data);
            byte[] bt = decrypt(buf, key.getBytes());
            return new String(bt, "utf-8");

        }

        /**
         * 
         * Description 根据键值进行加密
         * 
    @param data
         * 
    @param key
         *            加密键byte数组
         * 
    @return
         * 
    @throws Exception
         
    */

        private static byte[] encrypt(byte[] data, byte[] key) throws Exception {

            // 生成一个可信任的随机数源
            SecureRandom sr = new SecureRandom();

            // 从原始密钥数据创建DESKeySpec对象
            DESKeySpec dks = new DESKeySpec(key);

            // 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
            SecretKey securekey = keyFactory.generateSecret(dks);

            // Cipher对象实际完成加密操作
            Cipher cipher = Cipher.getInstance(DES);

            // 用密钥初始化Cipher对象
            cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);

            return cipher.doFinal(data);

        }

        /**
         * 
         * Description 根据键值进行解密
         * 
    @param data
         * 
    @param key
         *            加密键byte数组
         * 
    @return
         * 
    @throws Exception
         
    */

        private static byte[] decrypt(byte[] data, byte[] key) throws Exception {
            
            // 生成一个可信任的随机数源
            SecureRandom sr = new SecureRandom();

            // 从原始密钥数据创建DESKeySpec对象
            DESKeySpec dks = new DESKeySpec(key);

            // 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);

            SecretKey securekey = keyFactory.generateSecret(dks);

            // Cipher对象实际完成解密操作
            Cipher cipher = Cipher.getInstance(DES);

            // 用密钥初始化Cipher对象
            cipher.init(Cipher.DECRYPT_MODE, securekey, sr);

            return cipher.doFinal(data);
        }

        public static void main(String[] args) throws Exception {
            String period = "validateKey=123456789";   
            period = DesUtil.encrypt(period, "aopencom");
            period = URLEncoder.encode(period, "UTF-8").replace("*","*").replace("~", "~").replace("+"," ");
            System.out.println(period);
            
        }

    }
  • 相关阅读:
    Android开发环境搭建全程演示(jdk+eclipse+android sdk)
    这样在web service 中的android调用soap
    lotus数据库已坏,不能分配空间
    android 的sdk在线安装失败问题处理
    Android环境变量的设置
    App列表之圆角ListView源码
    安装Android SDK出现Failed to fetch URL http://dl
    BW Delta (增量)更新方法 . 沧海
    SAP BW系统日常维护日常工作及常见的Infopackage错误 沧海
    传输一个特定的InfoObject 沧海
  • 原文地址:https://www.cnblogs.com/wuxiang/p/4506045.html
Copyright © 2011-2022 走看看