如何给网址加密 简单点最好  最好能写点代码提示下 

解决方案 »

  1.   

    public class SecureUtils {
    /*
         * 如果系统中存在旧版本的数据,则此值不能修改,否则在进行密码解析的时候出错
         */
    private static final String PASSWORD_CRYPT_KEY = "__jDlog_";
    /*
     * Des用于创建SecretKeyFactory
     */
    private static final String DES="DES";
    /**
     * 
     * byte2hex(将字节转换成16进制字符串)
     * TODO(这里描述这个方法适用条件 – 可选)
     * TODO(这里描述这个方法的执行流程 – 可选)
     * TODO(这里描述这个方法的使用方法 – 可选)
     * TODO(这里描述这个方法的注意事项 – 可选)
     * @param   字节数组
     * @param  @return    设定文件
     * @return String    二进制字符串
     * @Exception 异常对象
     * @since  CodingExample Ver(编码范例查看) 1.1
     */
    public static String  byte2hex(byte[] b){
    String hs="";
    String stmp="";
    for(int i=0;b!=null&&i<b.length;i++){
    stmp=Integer.toHexString(b[i]&0xff);
    if(stmp.length()==1){
    hs+="0"+stmp;
    } else {
    hs+=stmp;
    }
    }
    return hs.toUpperCase();
    }
    /**
     * 
     * hex2byte(...........)
     * TODO(这里描述这个方法适用条件 – 可选)
     * TODO(这里描述这个方法的执行流程 – 可选)
     * TODO(这里描述这个方法的使用方法 – 可选)
     * TODO(这里描述这个方法的注意事项 – 可选)
     * @param   name
     * @param  @return    设定文件
     * @return String    DOM对象
     * @Exception 异常对象
     * @since  CodingExample Ver(编码范例查看) 1.1
     */
    public static byte[] hex2byte(byte[] b){
    //如果的长度是基数
    if(b.length%2!=0){
    throw new IllegalArgumentException("长度不是偶数 !");
    }
    byte[] by=new byte[b.length/2];
    for(int i=0;i<b.length;i+=2){
    String item=new String(b,i,2);
    by[i/2]=(byte)Integer.parseInt(item, 16);
    }
    return by;
    }
    /**
     * 
     * encrypt(加密)
     * TODO(这里描述这个方法适用条件 – 可选)
     * TODO(这里描述这个方法的执行流程 – 可选)
     * TODO(这里描述这个方法的使用方法 – 可选)
     * TODO(这里描述这个方法的注意事项 – 可选)
     * @param  src 数据源
     * @param  key    密钥 (长度必须是8的倍数)
     * @return byte[] 加密后的数据
     * @throws InvalidKeyException 
     * @throws NoSuchAlgorithmException 
     * @throws InvalidKeySpecException 
     * @throws NoSuchPaddingException 
     * @throws BadPaddingException 
     * @throws IllegalBlockSizeException 
     * @Exception 异常对象
     * @since  CodingExample Ver(编码范例查看) 1.1
     */
    public static byte[] encrypt(byte[] src,byte[] key) throws InvalidKeyException, NoSuchAlgorithmException, InvalidKeySpecException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException {
    // DES算法要求有一个可信任的随机数源
    SecureRandom sr=new SecureRandom();
    // 从原始密匙数据创建DESKeySpec对象,抛出InvalidKeyException
    DESKeySpec dks=new DESKeySpec(src);
    //创建一个密钥工厂,然后用它把DESKeySpec转换成 一个SecretKey对象,会抛出NoSuchAlgorithmException
    SecretKeyFactory keyFactory=SecretKeyFactory.getInstance(DES);
    //创建密钥,会抛出InvalidKeySpecException
    SecretKey secretKey=keyFactory.generateSecret(dks);
    //创建一个密码对象,会抛出NoSuchPaddingException
    Cipher cipher=Cipher.getInstance(DES);
    //用密钥初始化cipher对象
    cipher.init(Cipher.DECRYPT_MODE,secretKey,sr);
    //获取数据并加密,抛出BadPaddingException和IllegalBlockSizeException
    return cipher.doFinal(src);
    }
    /**
     * 
     * encrypt(对明文加密)
     * TODO(这里描述这个方法适用条件 – 可选)
     * TODO(这里描述这个方法的执行流程 – 可选)
     * TODO(这里描述这个方法的使用方法 – 可选)
     * TODO(这里描述这个方法的注意事项 – 可选)
     * @param   data  明文
     * @param   key   密钥
     * @return String    DOM对象
     * @Exception 异常对象
     * @since  CodingExample Ver(编码范例查看) 1.1
     */
    public static String encrypt(String data,String key){
    if(data!=null){
    try{
    return byte2hex(encrypt(data.getBytes(),key.getBytes()));
    } catch(Exception e) {
    e.printStackTrace();
    }
    }
    return null;
    }
    /**
     * 
     * decrypt(数据解密)
     * TODO(这里描述这个方法适用条件 – 可选)
     * TODO(这里描述这个方法的执行流程 – 可选)
     * TODO(这里描述这个方法的使用方法 – 可选)
     * TODO(这里描述这个方法的注意事项 – 可选)
     * @param  src 数据源
     * @param  key    密钥 (长度必须是8的倍数)
     * @return byte[] 加密后的数据
     * @throws InvalidKeyException 
     * @throws NoSuchAlgorithmException 
     * @throws InvalidKeySpecException 
     * @throws NoSuchPaddingException 
     * @throws BadPaddingException 
     * @throws IllegalBlockSizeException 
     * @Exception 异常对象
     * @since  CodingExample Ver(编码范例查看) 1.1
     */
    public static byte[] decrypt(byte[] src,byte[] key) throws InvalidKeyException, NoSuchAlgorithmException, InvalidKeySpecException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException {
    // DES算法要求有一个可信任的随机数源
    SecureRandom sr=new SecureRandom();
    // 从原始密匙数据创建DESKeySpec对象,抛出InvalidKeyException
    DESKeySpec dks=new DESKeySpec(src);
    //创建一个密钥工厂,然后用它把DESKeySpec转换成 一个SecretKey对象,会抛出NoSuchAlgorithmException
    SecretKeyFactory keyFactory=SecretKeyFactory.getInstance(DES);
    //创建密钥,会抛出InvalidKeySpecException
    SecretKey secretKey=keyFactory.generateSecret(dks);
    //创建一个密码对象,会抛出NoSuchPaddingException
    Cipher cipher=Cipher.getInstance(DES);
    //用密钥初始化cipher对象
    cipher.init(Cipher.DECRYPT_MODE,secretKey,sr);
    //获取数据并解密,抛出BadPaddingException和IllegalBlockSizeException
    return cipher.doFinal(src);
    }
    /**
         * 数据解密
         *
         * @param data 密文
         * @param key  密钥
         * @return 解密后的原始数据
         */
        public static String decrypt(String data, String key) {
            if (data != null)
                try {
                    return new String(decrypt(hex2byte(data.getBytes()), key.getBytes()));
                } catch (Exception e) {
                    e.printStackTrace();
                }
            return null;
        }
        
        /**
         * 密码加密
         *
         * @param password 密码明文
         * @return null 或 password的密文
         */
        public static String encryptPassword(String password) {
            if (password != null)
                try {
                    return byte2hex(encrypt(password.getBytes(), PASSWORD_CRYPT_KEY.getBytes()));
                } catch (Exception e) {
                    e.printStackTrace();
                }
            return null;
        }
        
        /**
         * 密码解密
         *
         * @param data 密码密文
         * @return null 或者 password的明文
         */
        public static String decryptPassword(String data) {
            if (data != null)
                try {
                    return new String(decrypt(hex2byte(data.getBytes()), PASSWORD_CRYPT_KEY.getBytes()));
                } catch (Exception e) {
                    e.printStackTrace();
                }
            return null;
        }
    }
    给你个接口,你自己去调用