网上看到 一个这样加密的程序,也许以后能用到,故摘录下来.网址:http://www.1cn.biz/index.php?q=node/89
使用方法:
encryptedTextXXXDES.getInstance().encrypt("your plain text");
plainText=XXXDES.getInstance().decrypt("your encrypted text");
代码:
package com.xxxxx.utils;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
import java.security.NoSuchAlgorithmException;
import java.security.Security;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
public class DES {
private String Algorithm = "DESede"; //"DESede" for Triple DES
private KeyGenerator keygen;
private SecretKey deskey;
private Cipher c;
private byte[] cipherByte;
public DES() {
init();
}
public DES(String filename) {
init(filename);
}
public SecretKey genKey() {
try {
keygen = KeyGenerator.getInstance(Algorithm);
deskey = keygen.generateKey(); //利用JavaBean的持久化将key保存为文件XXX.key
} catch (NoSuchAlgorithmException ex) {
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
return deskey;
}
/**
*
* @param filename
*/
public void init(String filename) {
// restore key
Security.addProvider(new com.sun.crypto.provider.SunJCE());
try {
FileInputStream fis = new FileInputStream(filename);
fis = new FileInputStream(filename);
ObjectInputStream ois = new ObjectInputStream(fis);
deskey = (SecretKey) ois.readObject();
ois.close();
fis.close();
c = Cipher.getInstance(Algorithm);
} catch (NoSuchAlgorithmException ex) {
ex.printStackTrace();
} catch (NoSuchPaddingException ex) {
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void init() {
Security.addProvider(new com.sun.crypto.provider.SunJCE());
try {
keygen = KeyGenerator.getInstance(Algorithm);
deskey = keygen.generateKey();
c = Cipher.getInstance(Algorithm);
} catch (NoSuchAlgorithmException ex) {
ex.printStackTrace();
} catch (NoSuchPaddingException ex) {
ex.printStackTrace();
}
}
public byte[] encryptor(String str) {
try {
c.init(Cipher.ENCRYPT_MODE, deskey);
cipherByte = c.doFinal(str.getBytes());
} catch (java.security.InvalidKeyException ex) {
ex.printStackTrace();
} catch (javax.crypto.BadPaddingException ex) {
ex.printStackTrace();
} catch (javax.crypto.IllegalBlockSizeException ex) {
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
return cipherByte;
}
public String decryptor(byte[] buff) {
try {
c.init(Cipher.DECRYPT_MODE, deskey);
cipherByte = c.doFinal(buff);
} catch (java.security.InvalidKeyException ex) {
ex.printStackTrace();
} catch (javax.crypto.BadPaddingException ex) {
ex.printStackTrace();
} catch (javax.crypto.IllegalBlockSizeException ex) {
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
return (new String(cipherByte));
}
}
/*
* Project xxxx
* Package com.xxxx.utils
* Created on 2003-11-24
* Author Derys
*
*/
package com.xxxx.utils;
/**
*
*
*/
public class XXXDES {
private static XXXDES instance = new XXXDES();
public XXXDES() {
}
/**
*
* @param str
* @return
*/
public String encrypt(String str) {
StringBuffer buffer = new StringBuffer();
DES des = new DES("XXX.key");
byte[] en = des.encryptor(str);
for (int i = 0; i < en.length; i++) {
buffer.append((char) en[i]);
}
return buffer.toString();
}
/**
*
* @param str
* @return
*/
public String decrypt(String str) {
DES des = new DES("XXX.key");
byte[] en = new byte[str.length()];
for (int i = 0; i < str.length(); i++) {
en[i] = (byte) str.charAt(i);
}
String de = des.decryptor(en);
return de;
}
/**
*
* @param str
* @return
*/
public String replaceChar(String str) {
StringBuffer buffer = new StringBuffer();
int index = str.indexOf("'");
if (index == -1) {
return str;
}
while (index > -1) {
buffer.append(str.substring(0, index));
buffer.append("''");
str = str.substring(index + 1);
index = str.indexOf("'");
}
buffer.append(str);
return buffer.toString();
}
/**
*
* @return
*/
public static XXXDES getInstance(){
if(instance == null){
instance = new XXXDES();
}
return instance;
}
}
分享到:
相关推荐
当前成熟的加密算法之一,加密能力较强,采用对称加密
理解这些知识点后,你可以通过阅读源代码来深入学习DES加密算法的具体实现细节,包括如何组织数据,如何进行密钥扩展,以及在每轮迭代中如何应用S盒和D盒操作。这将有助于你掌握密码学基础和C++编程技巧。
在学习DES算法源代码时,应重点理解以下几点: - 子密钥生成的步骤和逻辑。 - Feistel结构的工作原理,包括P-box和S-box的作用。 - 如何实现加密和解密过程中的异或和置换操作。 - 数据块如何在每一轮中被处理,以及...
在提供的文件"代码中国.txt"和"codechina"中,可能包含有3DES加密算法的实现源代码。这些代码可能包括了以下关键部分: 1. **密钥扩展**:将原始的64位密钥扩展为三个64位的子密钥。 2. **DES块加密**:实现DES的F...
总的来说,这个压缩包提供的资源是一个3重DES加密算法的实现,包括C语言和 Motorola 680x0 汇编语言版本,适用于理解和学习加密算法的实现细节,以及在特定硬件平台上的性能优化。尽管DES和3重DES在现代密码学中已经...
本文将围绕“C++几百个加密算法源代码”这一主题,深入探讨其中涉及的知识点,帮助你理解和掌握加密算法的实现原理。 首先,我们需要了解加密算法的基础概念。加密算法是一种用于保护数据安全的技术,它通过特定的...
DES加密算法,源代码,编译过,下载即可使用
其中,key为加密/解密时使用的 密钥;data为加密/解密的数据;mode为其工作模式:当模式为加密模 式时,明文按照64位进行分组,形成明文分组,此时key用于对数据 加密;当模式为解密模式时,key用于对64位的密文...
本软件和一般文本文件差不多,提供十二种文件格式支持,基于NET2.0,其中一种CZ文件采用des加密。这个是源代码,望大家支持一下。呵呵
在这个“DES加解密算法源代码,java”项目中,开发者通过自定义的Java代码实现了DES算法,而非直接使用Java的javax.crypto包中的预封装类。这种实现方式有助于深入理解DES的工作机制,包括初始置换、轮函数、逆初始...
本资源包含了几个常见的加密算法的Delphi源代码,如DES、MD5以及AES等,这对于学习和理解加密原理以及在实际项目中应用这些算法非常有帮助。 首先,我们来详细了解这些加密算法: 1. **DES(Data Encryption ...
在给定的C++源代码片段中,我们可以看到以下关键组成部分: - **初始化置换表(IP)**:`const static char ip[]`定义了初始置换的顺序,它是一个64位的数组,每个值对应原始64位明文的某一位。 - **最终置换表...
DES算法C语言实现的源代码,本人已经测试同uo,效果还可以
在这个“C++加密算法源代码”压缩包中,包含了300多种不同的加密和解密算法,这为开发者提供了一个丰富的学习和实践资源。 首先,我们要理解加密算法的基本概念。加密是一种将明文数据转化为看似随机的密文的过程,...
利用这个加密算法,稍稍修改可以实现对音频,视频mp3的加密。