import java.security.Security;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
/*字符串 DESede(3DES) 加密*/
public class ThreeDes {
/**
* @param args在java中调用sun公司提供的3DES加密解密算法时,需要使
* 用到$JAVA_HOME/jre/lib/目录下如下的4个jar包:
*jce.jar
*security/US_export_policy.jar
*security/local_policy.jar
*ext/sunjce_provider.jar
*/
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) {
// TODO: handle exception
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) {
// TODO: handle exception
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) {
// TODO Auto-generated method stub
//添加新安全算法,如果用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)));
}
}
分享到:
相关推荐
Java中3DES加密解密示例(封装byte数组16进制互转)
VC++6.0 DES加密解密示例工程,包含两个加密解密类库,实例化后即可使用
C#DES标准ECB加密解密示例源码,根据标准的C改的源码,与网上所搜索到的完全不一样,可以支持中文为密钥的加密,也可以支持为中文字符串的加密,如,密钥为:替天行道,明文为:来自替天行道的C#DES标准ECB加密解密...
《3DES加解密技术》 java_DES加密解密源码 java实现DES加密算法 Java中3DES加密解密示例(封装byte数组16进制互转) JAVA中3des加密算法
3des加,解密算法简单java示例,代码无太多注释,忘各位自学
主要介绍了Java实现的3des加密解密工具类,结合完整实例形式分析了3des加密解密的具体步骤与相关操作技巧,需要的朋友可以参考下
pb des 加密 解密 dll 示例 运行界面http://hi.csdn.net/attachment/201101/25/0_1295999881op80.gif
3DES加解密示例
des加密解密工具类的详细代码demo,现在的网络应用无处不存在着安全隐患,人们在使用的过程中对个人数据的保密性也越来越重视,一个简单的des加解密供大家参考,让你的程序多一层安全保障。
java使用des加密解密示例,适合java语言的所有平台,与.net等平台的加密解密兼容
有关3DES加密算法的web端js示例,有详细的加解密方法,简单明了
as3 des加解密示例,含Crypto库,flash builder 4.7项目
有关3DES加密算法的Java端示例,有详细的加解密方法,简单明了
DES加密解密MD5加密算法以及winform示例
这个项目是用androidstudio工具编写的,里面包含原项目和apk,这个apk实现了des的加密和解密的功能。
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调用例程。
由于不同的开发环境,编程语言导致加密解密经常出现问题。 我在开发Android与C#程序之间的数据交互时也遇到了这个问题,现将处理经验与大家分享一下。 C#系统采用DES加密字符串,Android用DES解密就是不成功,从网上...
DES加密解密示例; PB加密解密程序;加密解密;pb文本加密解密函数;本实例代码是用PB11.5写的,其中也函pb9.0的代码。适用于pb或其他语言对文本加密及解密功能的实现。