如何给网址加密 简单点最好 最好能写点代码提示下
解决方案 »
- 谁有《精通Hibernate:java对象持久化技术详解(第2版)》源码
- <action name=""><result>.</result></action>的作用是列出web应用下的文件请求。那么怎么调用这个
- ibates和sping的事务问题
- struts 在action中response.getWriter().write(Xml); 客户端接收不到XML
- 求struts spring ibatis 整合后的Demo
- jsf 开发环境 配不起来,求救
- jboss出现错误,重启后就好了
- 一个简单的错误,谁帮我解答一下
- 请问那里有comm.jar下载
- JAVA矩阵相乘
- jsf入门问题,郁闷啊:(The requested resource (/jsfdemo/userLogin.faces) is not available.
- hibernate使用left join on的问题
/*
* 如果系统中存在旧版本的数据,则此值不能修改,否则在进行密码解析的时候出错
*/
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;
}
}
给你个接口,你自己去调用