`
cesar2008
  • 浏览: 41162 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

BASE64加密、解密的实现

SUN 
阅读更多

package cn.cesar;

import java.io.IOException;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**
 * <dl>
 * <dt>cn.cesar</dt>
 * <dd>Description:对链接的参数进行加密、解密的实现
 * 如:http://192.168.1.5:8081/oa/forward.do?loginname=QktOV0AxMjE4OjExNzQ0NjUyNTI6Y2hlbmxpYW5jb25n&action=oahome
 *   这里 "QktOV0AxMjE4OjExNzQ0NjUyNTI6Y2hlbmxpYW5jb25n" = BASE64('SECRET'+':'+'TIME'+':'+'USERNAME'
 *          "SECRET" 这是双方商定的链接密码 密码:BKNW@1218
 *    "TIME" 这是时间戳,就是自从 1970.1.1 00:00:00 到现在的秒数
 *    "USERNAME" 这是用户名 </dd>
 * <dd>Copyright: Copyright (c) 2006</dd>
 * <dd>Company: XXXXXXXX技术有限公司</dd>
 * </dl>
 *
 * @author 陈联聪 Cesar
 * @version 1.0
 */
public class LinkEncrypt {

 /**
  * 双方协定的连接密码
  */
 private final String SECRET = "BKNW@1218";

 /**
  * @param args
  */
 public static void main(String[] args) {
  LinkEncrypt le = new LinkEncrypt();
  String ln = null;
  // 生成加密参数
  try {
   ln = le.createPar(le.SECRET, "chenliancong");
  } catch (Exception e) {
   e.printStackTrace();
  }

  // 解密参数
  try {
   String[] uln = le.unPar(ln);
   System.out.println(uln[0]);
   System.out.println(uln[1]);
   System.out.println(uln[2]);
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

 /**
  * <dl>
  * <dt>unPar</dt>
  * <dd>TODO 2007-3-21 下午04:08:52</dd>
  * <dd>Description:将加密参数进行解密,并返回</dd>
  * </dl>
  *
  * @author 陈联聪 Cesar
  * @version 1.0
  * @param loginName
  *            加密的参数
  * @return 解密后的参数
  * @throws IOException
  */
 public String[] unPar(String loginName) throws IOException {
  if (loginName == null || loginName.trim().equals(""))
   return null;
  String str = unEncrypt(loginName);
  System.out.println("解密后的字符串: " + str);
  if (str == null || str.trim().equals(""))
   return null;
  return str.split(":");
 }

 /**
  * <dl>
  * <dt>createPar</dt>
  * <dd>TODO 2007-3-21 下午03:43:10</dd>
  * <dd>Description:生成加密后的传递参数字符串</dd>
  * </dl>
  *
  * @author 陈联聪 Cesar
  * @version 1.0
  * @param secret
  *            双方协定的连接密码
  * @param userName
  *            用户名
  * @return 返回 [双方协定的连接密码]+[:]+[系统时间]+[:]+[用户名]
  * @throws Exception
  */
 public String createPar(String secret, String userName) throws Exception {
  if (secret == null || secret.trim().equals(""))
   return "";
  if (userName == null || userName.trim().equals(""))
   return "";
  String time = String.valueOf(System.currentTimeMillis() / 1000);
  // time 是时间戳,就是自从 1970.1.1 00:00:00 到现在的秒数
  StringBuffer sb = new StringBuffer();
  sb.append(secret).append(":");
  sb.append(time).append(":");
  sb.append(userName);

  System.out.println("生成的字符串: " + sb.toString());

  String loginName = encrypt(sb.toString());
  System.out.println("加密后的字符串: " + loginName);
  return loginName;
 }

 /**
  * <dl>
  * <dt>encrypt</dt>
  * <dd>TODO 2007-3-21 下午03:40:19</dd>
  * <dd>Description:对字符串进行BASE64加密</dd>
  * </dl>
  *
  * @author 陈联聪 Cesar
  * @version 1.0
  * @param str
  *            需加密的字符串
  * @return 返回加密后的字符串
  * @throws Exception
  */
 private String encrypt(String str) throws Exception {
  if (str == null || str.equals("")) {
   return "";
  }
  BASE64Encoder encoder = new BASE64Encoder();
  return encoder.encode(str.getBytes());
 }

 /**
  * <dl>
  * <dt>unEncrypt</dt>
  * <dd>TODO 2007-3-21 下午03:41:36</dd>
  * <dd>Description:对BASE64加密后的字符串进行解密</dd>
  * </dl>
  *
  * @author 陈联聪 Cesar
  * @version 1.0
  * @param str
  *            需解密的字符串
  * @return 返回解密后的字符串
  * @throws IOException
  */
 private String unEncrypt(String str) throws IOException {
  if (str == null || str.equals("")) {
   return "";
  }
  BASE64Decoder decoder = new BASE64Decoder();
  byte[] b = decoder.decodeBuffer(str);
  return new String(b);
 }
}

分享到:
评论

相关推荐

    BASE64加密解密

    另外,`BASE64加密解密 方法.txt`很可能是详细介绍了如何在Java中实现BASE64加密解密的步骤和技术细节。 综上所述,BASE64加密解密在Java开发中是一个实用的技术,它允许开发者轻松地在二进制数据和ASCII字符串之间...

    Java Base64加密解密方法工具类

    Java Base64加密解密方法工具类

    C# Base64加密解密

    总的来说,C#中的Base64加密解密提供了简单且安全的方法来处理二进制数据,特别是在需要在文本环境(如邮件、网页)中传输时。在WinForm应用中,开发者可以结合UI设计,创建用户友好的工具,方便地进行Base64编码和...

    java 图片base64 加密解密

    在Java编程中,图片Base64加密解密是一种常见的数据处理技术,特别是在网络传输和存储时,由于Base64编码可以将二进制数据转换为可打印的ASCII字符,因此非常适用。`sun.misc.BASE64Encoder`和`sun.misc.BASE64...

    sqlserver2005的base64加密解密函数

    总结,虽然SQL Server 2005本身并不提供内置的Base64加密解密功能,但通过创建自定义函数,我们可以实现类似的功能。需要注意的是,上述函数仅适用于简单场景,对于更复杂的需求,可能需要更完善的Base64编码解码...

    微信小程序 AES ECB base64 加密解密

    在微信小程序中实现AES ECB Base64加密解密,你需要以下步骤: 1. 引入加密库:微信小程序提供了`wx.request`方法来调用外部API,你可以引入第三方加密库,如`crypto-js`,通过npm安装后将其添加到项目中。 2. ...

    LabVIEW实现Base64加密解密程序源码

    LabVIEW实现Base64加密解密程序源码,可以作为子VI直接调用,非常方便,经过测试没有问题。base64是一种用64个字符来表示任意二进制数据的方法。base 64编码可以将任意一组字节转换为较长的常见文本字符序列,从而...

    c++实现base64算法加密解密

    c++实现base64算法加密解密,不需要修改,直接运行即可

    Sql Server Base64加密解密角本

    非常实用的Base64加密,解密角本。基于UTF8,支持中文加解密。

    js的base64加密解密

    在这个场景中,我们讨论的是一个纯JavaScript实现的Base64加密解密工具类,它无需依赖其他外部JavaScript库,因此非常适合在各种环境中使用,特别是对于那些对文件大小和加载速度有严格要求的项目。 Base64加密,也...

    base64加密解密的hive udf函数

    本文将详细探讨如何在Hive中自定义User Defined Function(UDF)来实现Base64的加密和解密。 首先,我们需要了解Base64的基本原理。Base64是一种将任意二进制数据转化为ASCII字符集的方法,它通过将每3个字节转换为...

    用Java实现BASE64加密解密

    总之,Java提供了方便的`java.util.Base64`工具类来处理Base64编码和解码,使得在Java项目中实现Base64加密解密变得简单且高效。这个基础的加密解密机制虽然简单,但在很多场景下已经足够满足基本的数据保护需求。

    Base64加密解密工具类

    java开发使用base64进行加密解密,开发人员只需调用其中方法即可完成加密解密操作!

    Base64加密解密java/js

    参照网上Base64 js加密解密写的java实现,网上没看到出现过,可能大神都不屑写这种小东东,只好自己写了。弄了好几天,总算弄好了。 因为是参照 js Base64写的java实现,所以代码可实现前台js,后台java的加密,...

    Base64加密解密_C语言实现和VC实现

    在本文中,我们将深入探讨Base64加密解密的概念,以及如何使用C语言和VC(Visual C++)实现这两种功能。 Base64的基本原理是将每3个字节的数据(24位)转换成4个6位的Base64字符,每个Base64字符代表6位二进制数,...

    Base64 加密解密小工具

    总的来说,Base64是一种在不同系统之间传输二进制数据的便捷手段,而“Base64 加密解密小工具”则为用户提供了一个方便快捷的实现这一功能的平台。通过理解和熟练运用这类工具,可以更好地处理各种涉及二进制数据...

    Base64加密解密.zip

    总的来说,Base64在C#中的实现既简单又直观,通过使用`System.Convert`类提供的方法,可以轻松地在WinForm应用中实现Base64的加密解密功能。无论是处理文本还是二进制数据,这个工具都能提供安全、方便的数据转换...

    AES加密解密 Base64加密解密

    java代码实例 AES加密解密 Base64加密解密

    C#base64加密解密工具(有源码)

    总结来说,C#的Base64加密解密工具提供了对二进制数据的简单编码和解码,方便在各种环境中传递和存储数据。源码的分析有助于开发者理解和掌握这一基础但实用的技术,进一步提高编程能力。在使用过程中,注意正确处理...

    SqlServerBase64 加密解密.rar

    本文将详细介绍如何在SQL Server中使用Base64进行加密和解密操作,特别关注如何处理包含中文、数字和字母的数据。 1. **Base64编码原理** Base64是一种基于64个可打印字符来表示二进制数据的编码方式。这64个字符...

Global site tag (gtag.js) - Google Analytics