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加密解密 方法.txt`很可能是详细介绍了如何在Java中实现BASE64加密解密的步骤和技术细节。 综上所述,BASE64加密解密在Java开发中是一个实用的技术,它允许开发者轻松地在二进制数据和ASCII字符串之间...
Java Base64加密解密方法工具类
总的来说,C#中的Base64加密解密提供了简单且安全的方法来处理二进制数据,特别是在需要在文本环境(如邮件、网页)中传输时。在WinForm应用中,开发者可以结合UI设计,创建用户友好的工具,方便地进行Base64编码和...
在Java编程中,图片Base64加密解密是一种常见的数据处理技术,特别是在网络传输和存储时,由于Base64编码可以将二进制数据转换为可打印的ASCII字符,因此非常适用。`sun.misc.BASE64Encoder`和`sun.misc.BASE64...
总的来说,Base64在C#中的实现既简单又直观,通过使用`System.Convert`类提供的方法,可以轻松地在WinForm应用中实现Base64的加密解密功能。无论是处理文本还是二进制数据,这个工具都能提供安全、方便的数据转换...
总结,虽然SQL Server 2005本身并不提供内置的Base64加密解密功能,但通过创建自定义函数,我们可以实现类似的功能。需要注意的是,上述函数仅适用于简单场景,对于更复杂的需求,可能需要更完善的Base64编码解码...
在微信小程序中实现AES ECB Base64加密解密,你需要以下步骤: 1. 引入加密库:微信小程序提供了`wx.request`方法来调用外部API,你可以引入第三方加密库,如`crypto-js`,通过npm安装后将其添加到项目中。 2. ...
LabVIEW实现Base64加密解密程序源码,可以作为子VI直接调用,非常方便,经过测试没有问题。base64是一种用64个字符来表示任意二进制数据的方法。base 64编码可以将任意一组字节转换为较长的常见文本字符序列,从而...
c++实现base64算法加密解密,不需要修改,直接运行即可
非常实用的Base64加密,解密角本。基于UTF8,支持中文加解密。
在这个场景中,我们讨论的是一个纯JavaScript实现的Base64加密解密工具类,它无需依赖其他外部JavaScript库,因此非常适合在各种环境中使用,特别是对于那些对文件大小和加载速度有严格要求的项目。 Base64加密,也...
本文将详细探讨如何在Hive中自定义User Defined Function(UDF)来实现Base64的加密和解密。 首先,我们需要了解Base64的基本原理。Base64是一种将任意二进制数据转化为ASCII字符集的方法,它通过将每3个字节转换为...
总之,Java提供了方便的`java.util.Base64`工具类来处理Base64编码和解码,使得在Java项目中实现Base64加密解密变得简单且高效。这个基础的加密解密机制虽然简单,但在很多场景下已经足够满足基本的数据保护需求。
java开发使用base64进行加密解密,开发人员只需调用其中方法即可完成加密解密操作!
参照网上Base64 js加密解密写的java实现,网上没看到出现过,可能大神都不屑写这种小东东,只好自己写了。弄了好几天,总算弄好了。 因为是参照 js Base64写的java实现,所以代码可实现前台js,后台java的加密,...
在本文中,我们将深入探讨Base64加密解密的概念,以及如何使用C语言和VC(Visual C++)实现这两种功能。 Base64的基本原理是将每3个字节的数据(24位)转换成4个6位的Base64字符,每个Base64字符代表6位二进制数,...
总的来说,Base64是一种在不同系统之间传输二进制数据的便捷手段,而“Base64 加密解密小工具”则为用户提供了一个方便快捷的实现这一功能的平台。通过理解和熟练运用这类工具,可以更好地处理各种涉及二进制数据...
java代码实例 AES加密解密 Base64加密解密
总结来说,C#的Base64加密解密工具提供了对二进制数据的简单编码和解码,方便在各种环境中传递和存储数据。源码的分析有助于开发者理解和掌握这一基础但实用的技术,进一步提高编程能力。在使用过程中,注意正确处理...
Base64是一种常见的数据编码方式,它...总之,"Base64加密解密封装"是对Base64编码和解码功能的自定义实现,允许开发者根据项目需求调整编码字符表,提供了JKCommonFunc类的头文件和实现文件,便于在项目中集成和使用。