url加密解密完整解决方案.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
url加密解密完整解决方案

URL加密解密完整解决方案 采用: ? .URLEncoder.encode(Base64编码(加密字串), StringCode) 这样的方法来对url中的参数进行加密。 ? 首先我们先说一下如何加密。 ? 一、算法的选择: ? 对于像对url中的参数进行加密的过程,我不建议使用rsa或者是三重des这样的加密算法,主要原因在于性能和速度会受影响。 ? 我建议大家使用对称加密如:DES或者是PBE算法。 ? 我们在这边就使用PBEWithMD5AndDES来实现加密。 ? 二、加密原理 ? 对于一个纯文本,加密后它会变成一堆乱码,这堆乱码包括了许多非法字符,我们不希望把这些字符放入bean中,因此在加密完后,我们还要对加密结果进行base64编码。 ? PBE从字面上理解,它必须使用一个口令,我们不希望我们的加密过于复杂而影响页面跳转的速度,因此我们不采用口令+KEY的形式,我们这边的口令就是我们的KEY。 ? 因此: ? 我们的整个加密过程实现如下: ? 输入口令(KEY)-- 加密文本 -- 以base64对加密后的结果进行编码--以.URLEncoder.encode编码成浏览器可以识别的形式--传输给接受的action ? 而解密过程如下: ? 接受的action得到参数--以base64对结果进行解码--得到纯加密文本--解密--得到解密后的值 ? 三、BASE64 这边对于BASE64的原理不多说了,只说实现,目前网上有很多实现方式,有自己写的,有用sun.misc.*的,我们在这个例子里将使用ernet.MimeUtility自带的base64编码工具。 需要引入activation.jar和mail.jar两个包。 下面是具体的实现: import ernet.MimeUtility; public class Base64 { ?public static byte[] encode(byte[] b) throws Exception { ??ByteArrayOutputStream baos = null; ??OutputStream b64os = null; ??try { ???baos = new ByteArrayOutputStream(); ???b64os = MimeUtility.encode(baos, base64); ???b64os.write(b); ???b64os.close(); ???return baos.toByteArray(); ??} catch (Exception e) { ???throw new Exception(e); ??} finally { ???try { ????if (baos != null) { ?????baos.close(); ?????baos = null; ????} ???} catch (Exception e) { ???} ???try { ????if (b64os != null) { ?????b64os.close(); ?????b64os = null; ????} ???} catch (Exception e) { ???} ??} ?} ?public static byte[] decode(byte[] b) throws Exception { ??ByteArrayInputStream bais = null; ??InputStream b64is = null; ??try { ???bais = new ByteArrayInputStream(b); ???b64is = MimeUtility.decode(bais, base64); ???byte[] tmp = new byte[b.length]; ???int n = b64is.read(tmp); ???byte[] res = new byte[n]; ???System.arraycopy(tmp, 0, res, 0, n); ???return res; ??} catch (Exception e) { ???throw new Exception(e); ??} finally { ???try { ????if (bais != null) { ?????bais.close(); ?????bais = null; ????} ???} catch (Exception e) { ???} ???try { ????if (b64is != null) { ?????b64is.close(); ?????b64is = null; ????} ???} catch (Exception

文档评论(0)

shenlan118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档