网络上DesUtil.java关于汉字加密解密出现乱码的问题

代码来自以下链接
http://www.oschina.net/code/piece_full?code=18383#30455

首先声明的是,代码不是本人写的,感谢一下作者,只不过本人在做一个android客户端,与服务器servlet接口通信的项目时,对协议作了des+base64加密处理,使用了该类,
期间遇到了一个比较纠结的问题,就是如果汉字存在于协议中,服务器加密,客户端解密会出现乱码,客户端加密,服务器解密亦然。
以上问题的解决其实很简单,只不过找问题原因的过程有点浪费时间,所以记录在此,以告知其他有缘也用到该类的朋友,能够节省一点宝贵的时间。


修改代码如下:

	/**
	 * Description 根据键值进行加密
	 * 
	 * @param data
	 * @param key
	 *            加密键byte数组
	 * @return
	 * @throws Exception
	 */
	public static String encrypt(String data, String key) throws Exception {
		byte[] bt = encrypt(data.getBytes("UTF-8"), key.getBytes());
		String strs = new BASE64Encoder().encode(bt);
		return strs;
	}

	/**
	 * Description 根据键值进行解密
	 * 
	 * @param data
	 * @param key
	 *            加密键byte数组
	 * @return
	 * @throws IOException
	 * @throws Exception
	 */
	public static String decrypt(String data, String key) throws IOException,
			Exception {
		if (data == null)
			return null;
		BASE64Decoder decoder = new BASE64Decoder();
		byte[] buf = decoder.decodeBuffer(data);
		byte[] bt = decrypt(buf,key.getBytes());
		return new String(bt, "UTF-8");
	}


请留意,修改的两处为"UTF-8"的位置。

希望大伙没有遇到这个问题。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值