首页 > 其他 > 详细

DES 加密、解密

时间:2017-02-28 23:13:42      阅读:296      评论:0      收藏:0      [点我收藏+]
	/* 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进行编码格式控制,这样就能够保证加密,解密格式一致,不会出现乱码


本文出自 “JianBo” 博客,转载请与作者联系!

DES 加密、解密

原文:http://jianboli.blog.51cto.com/12075002/1902082

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!