您的位置:首页 > 其它

DES 加密、解密

2017-02-28 16:53 225 查看
/* DES 加密、解密 */

/**
* DES 加密
*
* @param data
*            明文
* @return
* @throws Exception
*/
public static String DESEncrypt(String data) throws Exception {

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

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

// 创建一个密钥工厂,然后用它把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);
// 加密数据
String strs = new BASE64Encoder().encodeBuffer(cipher.doFinal(data.getBytes()));
return strs;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

/**
* DES 解密
*
* @param data
*            密文
* @return 明文
* @throws Exception
*/
public static String DESDecrypt(String data) throws Exception, Exception {
if (data == null)
return null;
byte[] buf = new BASE64Decoder().decodeBuffer(data);

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

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

// 创建一个密钥工厂,然后用它把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 new String(cipher.doFinal(buf));
}


上面代码在测试的时候,解密出现了乱码,
建议采用自己对base64进行编码格式控制,这样就能够保证加密,解密格式一致,不会出现乱码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  加密 DES