- 浏览: 265399 次
- 性别:
- 来自: 江西
文章分类
最新评论
-
hiben:
[list][*][list][*][*][*][/list] ...
多数据源的配置和切换 -
bqmcjl:
大哥。我项目里边怎么没有AbstractRoutingData ...
多数据源的配置和切换 -
zhouchuang:
y
java中的分页处理 -
hm2008:
...
父母不会站在原地等你 (推荐) -
tamsiuloong:
简单是简单 效率相当低
最简单的java 克隆实现
请看代码,这是3Des最简单的加解密过程:
/** * <pre> * Title: OaKeyHandle.java * Project: taxs_Portal * Type: com.tenpay.taxs.web.util.OaKeyHandle * Author: ben.liu * Create: May 15, 2008 11:41:09 AM * Copyright: Copyright (c) 2008 * Company: * <pre> */ /** * <pre> * 用户登录解密 * </pre> * * @author ben.liu * @version 1.0, May 15, 2008 */ import java.security.SecureRandom; import java.security.spec.KeySpec; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESedeKeySpec; public class OaKeyHandle { // DES3 解密 public static String decryptEde(String key, String src) // throws // DecryptException { String plainText = null; try { byte[] keyBytes = new byte[24]; // DES3 为24Bytes密钥 asciiToBcdBytes(key, keyBytes, Math.min(32, key.length()) / 2); for (int i = 0; i < 8; ++i) keyBytes[16 + i] = keyBytes[i]; // 从原始密匙数据创建一个DESKeySpec对象 KeySpec dks = new DESedeKeySpec(keyBytes); // 创建一个密匙工厂,然后用它把DESKeySpec对象转换成 // 一个SecretKey对象 SecretKey secKey = SecretKeyFactory.getInstance("DESede").generateSecret(dks); // Cipher对象实际完成解密操作 Cipher cipher = Cipher.getInstance("DESede/ECB/NoPadding"); // DES算法要求有一个可信任的随机数源 SecureRandom sr = new SecureRandom(); // 用密匙初始化Cipher对象 cipher.init(Cipher.DECRYPT_MODE, secKey, sr); int count = (src.length() + 1) / 2; byte[] inputBytes = new byte[count]; asciiToBcdBytes(src, inputBytes, count); // 正式执行解密操作 byte[] decryptBytes = cipher.doFinal(inputBytes); int olen = decryptBytes.length - 1; for (; decryptBytes[olen] == 0 && olen >= 0; --olen) { } plainText = new String(decryptBytes, 0, olen + 1); } catch (Exception e) { e.printStackTrace(); } return plainText; } private static void asciiToBcdBytes(String str, byte[] hex, int count)// throws // Exception { byte[] inputBytes = str.getBytes(); for (int i = 0, j = 0; j < inputBytes.length && i < count; ++i) { byte v = inputBytes[j]; ++j; if (v <= 0x39) hex[i] = (byte) (v - 0x30); else hex[i] = (byte) (v - 0x41 + 10); hex[i] <<= 4; if (j >= inputBytes.length) break; v = inputBytes[j]; ++j; if (v <= 0x39) hex[i] += (byte) (v - 0x30); else hex[i] += (byte) (v - 0x41 + 10); } } /** * 加密 * */ public static String encryptEde(String key, String src)// throws // DecryptException { String plainText = null; try { byte[] keyBytes = new byte[24]; // DES3 为24Bytes密钥 asciiToBcdBytes(key, keyBytes, Math.min(32, key.length()) / 2); for (int i = 0; i < 8; ++i) keyBytes[16 + i] = keyBytes[i]; // 从原始密匙数据创建一个DESKeySpec对象 KeySpec dks = new DESedeKeySpec(keyBytes); // 创建一个密匙工厂,然后用它把DESKeySpec对象转换成 // 一个SecretKey对象 SecretKey secKey = SecretKeyFactory.getInstance("DESede").generateSecret(dks); // Cipher对象实际完成解密操作 Cipher cipher = Cipher.getInstance("DESede/ECB/NoPadding"); // DES算法要求有一个可信任的随机数源 SecureRandom sr = new SecureRandom(); // 用密匙初始化Cipher对象 cipher.init(Cipher.ENCRYPT_MODE, secKey, sr); byte[] srcBytes = src.getBytes("GBK"); int srcLen = srcBytes.length; int encLen = ((srcLen % 8) == 0) ? srcLen : ((srcLen / 8 + 1) * 8); byte[] encBytes = new byte[encLen]; System.arraycopy(srcBytes, 0, encBytes, 0, srcLen); // 正式执行解密操作 byte[] encryptBytes = cipher.doFinal(encBytes); plainText = bcdBytesToAscii(encryptBytes, encLen); } catch (Exception e) { e.printStackTrace(); } return plainText; } private static String bcdBytesToAscii(byte[] hex, int count)// throws // Exception { byte[] ascii = new byte[2 * count]; int t; for (int i = 0; i < count; i++) { t = hex[i] & 0xf0; t = t >> 4; if (t <= 9) t += '0'; else if (t >= 10 && t <= 15) t += 'A' - 10; else t = '0'; ascii[2 * i] = (byte) t; t = hex[i] & 0x0f; if (t <= 9) t += '0'; else if (t >= 10 && t <= 15) t += 'A' - 10; else t = '0'; ascii[2 * i + 1] = (byte) t; } return (new String(ascii)); } /** * 解密商户系统登录用户信息 */ public static String[] onProcess(String passport, String key) { // 获取来自oa的请求信息 String loginParam = passport; if (null == loginParam) { return null; } // 解密来自oa的用户信息 String[] usrInfo = decryptEde(key, loginParam).split("&"); if (usrInfo.length < 3) { return null; } return usrInfo; } }
发表评论
-
spring quartz 任务调度
2011-07-07 15:29 1058最简单的配置如下:默认是一分钟执行一次 <bean i ... -
spring、hibernate等开源框架svn源码地址
2011-02-10 08:58 4004很多优秀的开源项目已经提供SVN源码签出,下面是各源码的svn ... -
eclipse启动错误:JVM terminated. Exit code=-1
2009-12-02 10:08 2146在eclipse.ini文件的开始增加下列vm的设置。下面是我 ... -
weblogic8.1的ejb服务问题
2009-09-27 10:11 1287在宁夏电信的开发中,发现在调用weblogic8.1的ejb服 ... -
多数据源的配置和切换
2009-02-06 11:13 7652[color=green] 项目中用到过多数据源之间的切换,从 ... -
js checkbox 全选 全不选 代码
2008-12-17 14:32 2385/* *obj 当前对象(this) *cName 子选项名称 ... -
最简单的java 克隆实现
2008-09-25 17:23 5147先定义一个标准的javabean对象,并实现持久化接口 请看代 ... -
java 代理机制实现
2008-09-25 15:56 2253Proxy 模式 代理的主要类:java.lang.re ... -
js 级联下拉框的生成
2008-09-17 17:57 3791最近做页面时,碰到js级联下拉框显示的问题。先用下拉框选择大类 ... -
ant脚本(部署应用)
2008-09-04 18:27 2621最近在部署应用时,遇到一个问题,就是ant脚本登录到linux ... -
struts+spring+sitemesh下的中文乱码问题
2008-04-14 17:25 2676最近有个项目用struts+spring+sitemesh做的 ... -
spring jdbcTemplate 操作接口使用
2008-04-10 22:56 3374import java.sql.CallableState ... -
spring jdbcTemplate 实现批量更新操作接口使用
2008-04-10 22:52 16543批量更新操作使用如下代码: public int[] up ... -
struts下的分页实现
2008-04-10 13:24 1514ActionForm 基类 BaseForm的代码如下: ... -
java中的正则表达式
2007-10-29 11:00 1940如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一 ... -
spring AOP
2007-08-09 16:39 1562这是在网上发现的一篇关于Spring AOP编程的教程,读完这 ... -
Tomcat内存设置从windows服务启动不生效?
2007-08-09 16:24 8637... -
java中用URLConnection 类post方式提交表单
2007-07-02 09:43 29698/** * <pre> * Title: ... -
转贴hibernate2.1与hibernate3.0的区别
2007-03-09 16:03 4389尽管Hibernate 3.0 与Hibernate2.1的源 ... -
各种数据库的jdbc驱动下载及连接方式
2007-03-07 16:46 34917各种数据库驱动 ...
相关推荐
源码并没有写出3DES加解密过程,而是用java写的, 将java打包成jar包提供给易语言调用。至于这个东西有什么用? 方便web交互数据,php java都是支持的。 @zhao6810。
DES加密解密过程,C++实现
利用MFC编写的DES加解密程序,可以输入一个文件(最好不要超过1M,否则加密速度比较慢),再输入8位密码(超过8位按8位算),实行加密或解密,并且能够计算加密解密所用的时间
DES加解密的C语言实现,并且以txt文档的形式输出所有加解密过程,方便查看
3DES加密解密的实现. 详解了3DES加密及解密的过程原理及应用
用VC实现文件的DES加密解密,其中包括算法的详细过程
带界面的DES加密解密java源码,可以实现加密解密和显示每一步的过程。
之前在CSDN下载了个DES例子,在调试的过程中发现有个BUG,就重新找资源更改了下,上传出来供参考,所参考的资源参考文件中readme
DES加密解密工具类及使用DEMO,可以用于用户信息传输过程加密等
DES加解密过程和实现.doc
在linux/unix平台上实现的des,3des加密解密算法。在main.c中提供了实例程序,你可以运行他来知道如何使用该加密解密过程。
DES 的加密解密,容易理解,可以运行,很好的课程设计哦
本文是一篇讨论关于常用文件加密解密算法的毕业设计论文,它详细的讲述了文件加密解密算法实现的过程中所用到的方法、技术。对公钥密码体制和私钥密码体制进行了分析和研究,并对公钥密码体制和私钥密码体制的代表...
本程序实现了DES的加密解密过程。对密码学实验的的同学会有帮助
des加密解密工具类的详细代码demo,现在的网络应用无处不存在着安全隐患,人们在使用的过程中对个人数据的保密性也越来越重视,一个简单的des加解密供大家参考,让你的程序多一层安全保障。
不解释,所有过程本人封装成jar包,导入项目直接调用DES3encrypt(传明文)加密 DES3decrypt(传密文) 解密
随着信息技术的快速发展,网络成为了人们生活中不可缺少的一部分,网络安全问题也渐入人们视线。...本文将对DES (Data Encryption Standard) 数据加密标准进行如何加密以及如何解密进行详细的介绍。
而解密则为其反过程: 平文 = DK1(EK2(DK3(密文))) 即以K3解密,以K2“加密”,最后以K1解密。 每次加密操作都只处理64位数据,称为一块。 无论是加密还是解密,中间一步都是前后两步的逆。这种做法提高了使用密钥...
源码交流 请下载资源里面联系方式 这里面有des 3des的加解密,以及银联ANSI9.9mac运算,异或运算,模拟银行密码键盘加密过程,支持有账号和无账号类型。
使用matlab实现DES加密解密过程,对初学DES算法者有一定帮助。