当前位置: 代码迷 >> J2EE >> 怎么做网址加密
  详细解决方案

怎么做网址加密

热度:35   发布时间:2016-04-22 01:47:23.0
如何做网址加密
如何给网址加密 简单点最好 最好能写点代码提示下

------解决方案--------------------
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(数据解密)
  相关解决方案