- 浏览: 230553 次
- 性别:
- 来自: 深圳
-
文章分类
最新评论
-
wahahachuang8:
GoEasy 实时推送支持IE6-IE11及大多数主流浏览器的 ...
服务器推送技术 java -
mahuanjian:
[flash=200,200][/flash]
服务器推送技术 java -
wenjundiandian:
下面有网页编辑器的话还是会被隐藏.
ext中消息框、提示框、确认框显示在最前面的解决方法 -
天塔上的猫:
/**
* JAVA常见的权限控制算法的实现
*
* ...
JAVA常见的权限控制算法的实现
在java中调用sun公司提供的3DES加密解密算法时,需要使用到$JAVA_HOME/jre/lib/目录下如下的4个jar包:
jce.jar
security/US_export_policy.jar
security/local_policy.jar
ext/sunjce_provider.jar
Java运行时会自动加载这些包,因此对于带main函数的应用程序不需要设置到CLASSPATH环境变量中。对于WEB应用,不需要把这些包加到WEB-INF/lib目录下。
以下是java中调用sun公司提供的3DES加密解密算法的样本代码:
/*字符串 DESede(3DES) 加密*/
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
public class ThreeDes {
private static final String Algorithm = "DESede"; //定义 加密算法,可用 DES,DESede,Blowfish
//keybyte为加密密钥,长度为24字节
//src为被加密的数据缓冲区(源)
public static byte[] encryptMode(byte[] keybyte, byte[] src) {
try {
//生成密钥
SecretKey deskey = new SecretKeySpec(keybyte, Algorithm);
//加密
Cipher c1 = Cipher.getInstance(Algorithm);
c1.init(Cipher.ENCRYPT_MODE, deskey);
return c1.doFinal(src);
}
catch (java.security.NoSuchAlgorithmException e1) {
e1.printStackTrace();
}
catch (javax.crypto.NoSuchPaddingException e2) {
e2.printStackTrace();
}
catch (java.lang.Exception e3) {
e3.printStackTrace();
}
return null;
}
//keybyte为加密密钥,长度为24字节
//src为加密后的缓冲区
public static byte[] decryptMode(byte[] keybyte, byte[] src) {
try {
//生成密钥
SecretKey deskey = new SecretKeySpec(keybyte, Algorithm);
//解密
Cipher c1 = Cipher.getInstance(Algorithm);
c1.init(Cipher.DECRYPT_MODE, deskey);
return c1.doFinal(src);
}
catch (java.security.NoSuchAlgorithmException e1) {
e1.printStackTrace();
}
catch (javax.crypto.NoSuchPaddingException e2) {
e2.printStackTrace();
}
catch (java.lang.Exception e3) {
e3.printStackTrace();
}
return null;
}
//转换成十六进制字符串
public static String byte2hex(byte[] b) {
String hs="";
String stmp="";
for (int n=0;n<b.length;n++) {
stmp=(java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length()==1) hs=hs+"0"+stmp;
else hs=hs+stmp;
if (n<b.length-1) hs=hs+":";
}
return hs.toUpperCase();
}
public static void main(String[] args){
//添加新安全算法,如果用JCE就要把它添加进去
Security.addProvider(new com.sun.crypto.provider.SunJCE());
final byte[] keyBytes = {0x11, 0x22, 0x4F, 0x58,
(byte)0x88, 0x10, 0x40, 0x38, 0x28, 0x25, 0x79, 0x51,
(byte)0xCB, (byte)0xDD, 0x55, 0x66, 0x77, 0x29, 0x74,
(byte)0x98, 0x30, 0x40, 0x36, (byte)0xE2
}; //24字节的密钥
String szSrc = "This is a 3DES test. 测试";
System.out.println("加密前的字符串:" + szSrc);
byte[] encoded = encryptMode(keyBytes, szSrc.getBytes());
System.out.println("加密后的字符串:" + new String(encoded));
byte[] srcBytes = decryptMode(keyBytes, encoded);
System.out.println("解密后的字符串:" + (new String(srcBytes)));
}
}
来源:http://java.chinaitlab.com/advance/794851.html
发表评论
-
利用 Heritrix 构建特定站点爬虫
2011-01-12 13:42 872Heritrix 是一个由 java 开 ... -
java解析xml文件四种方式
2011-01-10 16:23 7051.介绍 1)DOM(JAXP Crims ... -
Spring AOP的两种实现方式
2010-12-10 09:16 885来源:http://javacrazyer.iteye.com ... -
详解Java解析XML的四种方法
2010-12-09 22:31 828来源:http://mengsina.iteye.co ... -
(转载)手写压缩软件,超详细解释(哈夫曼实现)
2010-12-07 11:17 1063转载自:http://stchou.iteye.com/b ... -
java通过包装器防SQL注入
2010-01-29 11:04 1193定义包装器对request进行 ... -
comparable 与comparator的区别
2010-01-29 09:12 936Comparable & Comparator 都是用 ... -
Java经典问题算法大全
2010-01-28 20:52 3006/*【程序1】题目:古典 ... -
Java各种排序算法
2010-01-28 20:50 902/*** 排序测试类* * 排序算法的分类如下:* 1.插入排 ... -
Java细节总结
2010-01-28 20:46 691TURE、FALSE、NULL等都不是Java关键字; 数组 ... -
设计异常管理系统
2010-01-28 20:37 828——针对有效的错误处理设计异常管理系统 作者:Jean-Pie ... -
使用Filter快速对网页资源进行缓存
2010-01-28 20:18 883使用Filter快速对网页资源进行缓存,在网页资源没有改变的情 ... -
详解ThreadLocal与synchronized
2010-01-28 20:14 774Java良好的支持多线程。使用java,我们可以很轻松的编程一 ... -
在有多个选择路径的情况下,利用Switch可以使程序更加简洁有效。但由于其只能对整数选择因子进行判断,所以限制了其在其他类型尤其是String的使用,本文利用J
2010-01-28 20:04 859在有多个选择路径的情况下,利用Switch可以使程序更加简洁有 ... -
java优化编程37条
2010-01-28 20:00 6901.JVM管理两种类型的内 ... -
服务器推送技术 java
2009-12-28 12:11 6261下面介绍在ARP之上的一个非常热门的技术实现:服务器推送技术。 ... -
java排序集锦
2009-12-16 09:29 815Java代码 package sort; ... -
java货币 Locale Currency NumberFormat
2009-12-04 18:14 2353使用java currency配合Locale,NumberF ... -
Deque 作为堆栈使用(ArrayDeque)
2009-12-04 18:09 2779package code.jdk; imp ... -
Random类
2009-12-04 14:00 1020Random类 (java.util) ...
相关推荐
jce.jar security/US_export_policy.jar ... 以下是java中调用sun公司提供的3DES加密解密算法的样本代码: 代码如下:/*字符串 DESede(3DES) 加密*/ import java.security.*; import javax.crypto.*; import javax.c
PB可用md5加密、des加解密DLL,附Powerbilder9.0调用例程。
调用方法(加密》解密》加密): unsigned char key1[] = "12345678"; unsigned char key2[] = "abcdefgh"; unsigned char key3[] = "~!@#$%^&"; //如果只需要两组密钥,则本组密钥可以和密钥1一样。 unsigned...
本程序支持字符串和文件加密和解密,密文以16进制形式输出。能够显示输入密钥的16轮子密钥,对于输入的8字节明文能够显示出16轮迭代的中间结果。鉴于本人有限,有不对的地方希望大家多多批评和指正! 本人上传的处女...
DES加密算法,有示例,调用简单,中英文数字混合
在Java中,我们通常使用`javax.crypto`包中的类来实现DES加密和解密。以下是一个简单的DES加密和解密的Java实现: ```java import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto....
总的来说,这段C#代码提供了一个简单的文件加密解密工具,利用DES算法实现了对文件的安全保护。然而,需要注意的是,DES算法由于其56位的密钥长度,在现代计算环境下可能不够安全,更推荐使用AES(Advanced ...
本示例主要介绍如何使用Python的PyCrypto库来实现DES(Data Encryption Standard)加密解密。DES是一种对称加密算法,它要求加密和解密使用相同的密钥。 首先,确保已经安装了PyCrypto库。如果没有,可以通过命令`...
这个C#类封装的DES加密解密,可以使用默认秘钥进行加密、解密,也可以自定义秘钥进行加密、解密,调用简单方便。 示例一: using System; using System.Security.Cryptography; using System.Text; namespace ...
- 示例代码中,首先通过`KeyGenerator.getInstance("DESede")`获取DESede(3DES)密钥生成器,这是一种加强版的DES,安全性稍强于原始的DES。然后调用`generateKey()`生成密钥,并使用`Cipher.getInstance("DESede...
'调用示例 Debug.Print(stringToHex(des_crypt("MinqfDesTest", "mimi9924", 1))) '加密 Debug.Print(des_crypt("MinqfDesTest", hexToString("3F2DFAAC155A9D5A"), 0)) '解密 这两天要做个VB程序访问PHP的Web服务...
【DES加密】是一种传统的对称加密算法,全称为Data Encryption Standard。DES在1970年代被美国国家标准局(NIST)采纳为标准,并广泛应用于金融和其他领域。它基于一个56位的密钥,通过一系列复杂的数学运算(包括...
PHP中的XXTEA加密解密算法实现主要包括以下几个关键步骤和函数: 1. **long2str** 和 **str2long** 函数: 这两个辅助函数分别用于将长整型数组转换为字符串和将字符串转换为长整型数组。在加密和解密过程中,数据...
在本示例中,CryptoJS用于在浏览器环境中执行DES加密和解密操作。以下将详细介绍如何使用CryptoJS进行DES加密以及两种不同的工作模式:CBC(Cipher Block Chaining)和ECB(Electronic Codebook)。 1. **CBC模式...
总结来说,此示例提供了一个完整的3DES加密和解密流程,包括密钥的使用、Cipher对象的初始化、加密解密过程以及结果的Base64编码和解码。在实际应用中,需要根据具体需求对密钥管理、错误处理和安全性进行更详细的...
本示例代码提供了一个名为`Security`的类,该类实现了基于DES(Data Encryption Standard)算法的加密和解密功能。DES是一种对称加密算法,其特点是速度快,但密钥较短,为64位,实际使用时通常取56位。 `Security`...
在提供的示例代码中,有两个按钮,一个用于加密,一个用于解密。当用户点击“加密”按钮时,`encode()`函数会被调用,它将输入框`#secret`中的文本转换为编码形式并显示出来。点击“解密”按钮时,`decode()`函数...
3. **明文加密**和**密文解密**是核心加密解密功能,调用DES算法实现数据的转换。 4. **加密部分缓存清除**和**解密部分缓存清除**是为了保护用户数据的安全,防止内存泄露或数据残留。 5. **密文输入**用于接收已...
最后,通过调用这两个方法,可以看到原始字符串`/upload/image/201602120012.jpg`经过加密和解密后,能够恢复到原始状态,验证了DES加密解密的正确性。 需要注意的是,DES由于其密钥长度较短,现在已经不再被视为...