代码:package des3;
import java.io.IOException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
@SuppressWarnings("restriction")
public class TripleDESTest {
/**
* 根据参数生成Key;
*
* @param strKey
*/
private Key getKey(String strKey) {
Key key = null;
try {
KeyGenerator _generator = KeyGenerator.getInstance("DES");
_generator.init(new SecureRandom(strKey.getBytes()));
key = _generator.generateKey();
_generator = null;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return key;
}
/**
* 获得一次3DES加密后的密文
*
* @param
* @return strMi
*/
public String getEncString(String strMing, String strKey) {
byte[] byteMi = null;
byte[] byteMing = null;
String strMi = "";
Key key = getKey(strKey);
BASE64Encoder encoder = new BASE64Encoder();
try {
byteMing = strMing.getBytes("utf-8");
byteMi = getEncCode(byteMing, key);
strMi = encoder.encode(byteMi);
} catch (Exception e) {
e.printStackTrace();
} finally {
encoder = null;
byteMi = null;
byteMing = null;
}
return strMi;
}
/**
* 获得两次3DES加密后的密文
*
* @param
* @return strMi
*/
public String getTwiceEncString(String strMing, String strKey) {
return getEncString(getEncString(strMing, strKey), strKey);
}
/**
* 获得一次3DES解密后的明文
*
* @param
* @return strMing
*/
public String getDecString(String strMi, String strKey) {
BASE64Decoder base64Decoder = new BASE64Decoder();
byte[] byteMing = null;
byte[] byteMi = null;
String strMing = "";
Key key = getKey(strKey);
try {
byteMi = base64Decoder.decodeBuffer(strMi);
byteMing = getDecCode(byteMi, key);
strMing = new String(byteMing, "utf-8");
} catch (IOException e) {
e.printStackTrace();
} finally {
base64Decoder = null;
byteMing = null;
byteMi = null;
}
return strMing;
}
/**
* 获得两次3DES解密后的明文
*
* @param
* @return strMing
*/
public String getTwiceDecString(String strMi, String strKey) {
return getDecString(getDecString(strMi, strKey), strKey);
}
/**
* 获得一次3DES加密后的密文
*
* @param byts
* @return
*/
private byte[] getEncCode(byte[] byts, Key key) {
byte[] byteFina = null;
Cipher cipher;
try {
cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, key);
byteFina = cipher.doFinal(byts);
} catch (Exception e) {
e.printStackTrace();
} finally {
cipher = null;
}
return byteFina;
}
/**
* 获得一次3DES解密后的明文
*
* @param bytd
* @return
*/
private byte[] getDecCode(byte[] bytd, Key key) {
byte[] byteFina = null;
Cipher cipher = null;
try {
cipher = Cipher.getInstance("DES");
cipher.init(Cipher.DECRYPT_MODE, key);
byteFina = cipher.doFinal(bytd);
} catch (Exception e) {
e.printStackTrace();
} finally {
cipher = null;
}
return byteFina;
}
public static void main(String[] args) {
TripleDESTest td = new TripleDESTest();
Key k = td.getKey("Key");
System.out.println("获得的密钥key是:" + k);
String encyStr = td.getEncString("Test", "Key");
System.out.println("一次加密后的密文是:" + encyStr);
String decyStr = td.getDecString(encyStr, "Key");
System.out.println("一次解密后的明文是:" + decyStr);
encyStr = td.getTwiceEncString("Test", "Key");
System.out.println("两次加密后的密文是:" + encyStr);
decyStr = td.getTwiceDecString(encyStr, "Key");
System.out.println("两次解密后的明文是:" + decyStr);
}
}
运行结果:
获得的密钥key是:com.sun.crypto.provider.DESKey@fffe7bef
一次加密后的密文是:dh2ue38w81g=
一次解密后的明文是:Test
两次加密后的密文是:8EBUOcWqIZlpg1n1YaqW+A==
两次解密后的明文是:Test
分享到:
相关推荐
Java中3DES加密解密示例(封装byte数组16进制互转)
VC++6.0 DES加密解密示例工程,包含两个加密解密类库,实例化后即可使用
C#DES标准ECB加密解密示例源码,根据标准的C改的源码,与网上所搜索到的完全不一样,可以支持中文为密钥的加密,也可以支持为中文字符串的加密,如,密钥为:替天行道,明文为:来自替天行道的C#DES标准ECB加密解密...
3des加,解密算法简单java示例,代码无太多注释,忘各位自学
java使用des加密解密示例,适合java语言的所有平台,与.net等平台的加密解密兼容
主要介绍了Java实现的3des加密解密工具类,结合完整实例形式分析了3des加密解密的具体步骤与相关操作技巧,需要的朋友可以参考下
pb des 加密 解密 dll 示例 运行界面http://hi.csdn.net/attachment/201101/25/0_1295999881op80.gif
3DES加解密示例
des加密解密工具类的详细代码demo,现在的网络应用无处不存在着安全隐患,人们在使用的过程中对个人数据的保密性也越来越重视,一个简单的des加解密供大家参考,让你的程序多一层安全保障。
as3 des加解密示例,含Crypto库,flash builder 4.7项目
有关3DES加密算法的web端js示例,有详细的加解密方法,简单明了
有关3DES加密算法的Java端示例,有详细的加解密方法,简单明了
《3DES加解密技术》 java_DES加密解密源码 java实现DES加密算法 Java中3DES加密解密示例(封装byte数组16进制互转) JAVA中3des加密算法
DES加密解密MD5加密算法以及winform示例
这个项目是用androidstudio工具编写的,里面包含原项目和apk,这个apk实现了des的加密和解密的功能。
PB可用md5加密、des加解密DLL,附Powerbilder9.0调用例程。
由于不同的开发环境,编程语言导致加密解密经常出现问题。 我在开发Android与C#程序之间的数据交互时也遇到了这个问题,现将处理经验与大家分享一下。 C#系统采用DES加密字符串,Android用DES解密就是不成功,从网上...
DES加密解密示例; PB加密解密程序;加密解密;pb文本加密解密函数;本实例代码是用PB11.5写的,其中也函pb9.0的代码。适用于pb或其他语言对文本加密及解密功能的实现。
调用方法(加密》解密》加密): unsigned char key1[] = "12345678"; unsigned char key2[] = "abcdefgh"; unsigned char key3[] = "~!@#$%^&"; //如果只需要两组密钥,则本组密钥可以和密钥1一样。 unsigned...
3des算法的使用示例,用得着的朋友下载下来看看,有不明白的给我留言