生成DES密钥、保存密钥到文件、从文件读取密钥、加密、解密等操作。
java 代码
- import java.io.ByteArrayOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.security.InvalidKeyException;
- import java.security.Key;
- import java.security.NoSuchAlgorithmException;
- import java.security.SecureRandom;
- import java.security.Security;
- import java.security.spec.InvalidKeySpecException;
- import javax.crypto.Cipher;
- import javax.crypto.KeyGenerator;
- import javax.crypto.SecretKeyFactory;
- import javax.crypto.spec.DESKeySpec;
- import org.apache.commons.configuration.ConfigurationException;
- import org.apache.commons.configuration.PropertiesConfiguration;
- import com.sun.crypto.provider.SunJCE;
-
- public class DESTest {
- private static final String ALGORITHM = "DES";
-
-
-
-
-
-
-
-
-
- public Key generateKey() throws EncryptException {
- try {
- Security.insertProviderAt(new SunJCE(), 1);
- KeyGenerator generator = KeyGenerator.getInstance(ALGORITHM);
- generator.init(new SecureRandom());
- Key key = generator.generateKey();
- return key;
- } catch (NoSuchAlgorithmException e) {
- throw new EncryptException(e);
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
- public Cipher getCipher(Key key, int cipherMode) throws EncryptException {
- try {
- Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
- cipher.init(cipherMode, key);
- return cipher;
- } catch (Exception e) {
-
- throw new EncryptException("Generate Cipher occurs Exception.["
- + e.getMessage() + "]");
- }
- }
-
- public void saveKey(Key key, String filename) throws EncryptException {
- if (key == null) {
- return;
- }
-
- File file = new File(filename);
- try {
- file.createNewFile();
- } catch (IOException e1) {
- throw new EncryptException(e1);
- }
-
- try {
- PropertiesConfiguration publicConfig = new PropertiesConfiguration(
- filename);
- publicConfig.setProperty("Key", Utils.bytesToHexStr(key
- .getEncoded()));
- publicConfig.save();
- } catch (ConfigurationException e) {
- throw new EncryptException(e);
- }
- }
-
- public Key loadKey(String filename) throws EncryptException {
- try {
- PropertiesConfiguration config = new PropertiesConfiguration(
- new File(filename));
- String privateKeyValue = config.getString("Key");
-
- DESKeySpec dks = new DESKeySpec(Utils
- .hexStrToBytes(privateKeyValue));
-
- SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
- Key key = keyFactory.generateSecret(dks);
- return key;
- } catch (ConfigurationException e) {
- throw new EncryptException(e);
- } catch (NoSuchAlgorithmException e) {
- throw new EncryptException(e);
- } catch (InvalidKeyException e) {
- throw new EncryptException(e);
- } catch (InvalidKeySpecException e) {
- throw new EncryptException(e);
- }
- }
-
- public byte[] doEncrypt(Key key, byte[] data) throws EncryptException {
- try {
-
- Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
-
-
- cipher.init(Cipher.ENCRYPT_MODE, key);
-
- byte[] raw = cipher.doFinal(data);
-
-
- return raw;
- } catch (Exception e) {
- e.printStackTrace();
- throw new EncryptException("Do encrypt occurs Exception.["
- + e.getMessage() + "]");
- }
- }
-
- public byte[] doDecrypt(Key key, byte[] raw) throws EncryptException {
- try {
-
- Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
-
- cipher.init(Cipher.DECRYPT_MODE, key);
-
-
- byte[] data = cipher.doFinal(raw);
-
-
- return data;
- } catch (Exception e) {
- e.printStackTrace();
- throw new EncryptException("Do decrypt occurs Exception.["
- + e.getMessage() + "]");
- }
- }
-
- public static void main(String[] args) {
- DESTest bean = new DESTest();
- String keyFilename = "d:/key.txt";
- String srcFilename = "d:/temp/1.txt";
- String encryptFilename = "D:/temp/encrypt_result.dat";
- String decryptFilename = "D:/temp/decrypt_result.txt";
-
- Key key = bean.initKey(keyFilename);
- DESEncrypt encrypt = DESEncryptImpl.getInstance();
-
- try {
-
- System.out.println("encrypt begin ...");
- FileInputStream in = new FileInputStream(srcFilename);
- ByteArrayOutputStream bout = new ByteArrayOutputStream();
- byte[] tmpbuf = new byte[1024];
- int count = 0;
- while ((count = in.read(tmpbuf)) != -1) {
- bout.write(tmpbuf, 0, count);
- tmpbuf = new byte[1024];
- }
- in.close();
- byte[] orgData = bout.toByteArray();
- byte[] raw = encrypt.doEncrypt(key, orgData);
-
- OutputStream out = new FileOutputStream(new File(encryptFilename));
- out.write(raw);
- out.close();
- System.out.println("encrypt done ...");
-
-
- System.out.println("decrypt begin ...");
- in = new FileInputStream(encryptFilename);
- bout = new ByteArrayOutputStream();
- tmpbuf = new byte[1024];
- count = 0;
- while ((count = in.read(tmpbuf)) != -1) {
- bout.write(tmpbuf, 0, count);
- tmpbuf = new byte[1024];
- }
- in.close();
- orgData = bout.toByteArray();
- byte[] data = encrypt.doDecrypt(key, orgData);
- out = new FileOutputStream(new File(decryptFilename));
- out.write(data);
- out.flush();
- out.close();
- System.out.println("decrypt done ...");
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (EncryptException e) {
- e.printStackTrace();
- }
- }
-
-
-
-
- public Key initKey(String keyFilename) {
- DESControl control = DESControlImpl.getInstance();
- File keyFile = new File(keyFilename);
- Key key = null;
- try {
- if (!keyFile.exists()) {
- System.out.println("generate Key.");
- key = control.generateKey();
- control.saveKey(key, keyFilename);
- return key;
-
- } else {
- System.out.println("load Key.");
- key = control.loadKey(keyFilename);
- return key;
- }
- } catch (EncryptException e) {
- e.printStackTrace();
- }
- return key;
- }
- }
分享到:
相关推荐
使用java技术编写的Des加密/解密,的工具类,已亲测可完全正确使用,无bug
Java版标准3DES加密/解密方法,加密函数desedeEncoder(String paramString1, String key) 解密函数desedeDecoder(String dest, String key)
des 加密解密工具 1、将要 加密/解密 的密码 2、公钥 3、加密button 解密 botton 4、 加密或解密出来的结果
PHP 3DES加密/解密类,兼容支付宝、微信等。
DES加密/解密类成熟的加密解密类,适合项目开发,可以对于明文进行加密
des算法是从网上找的,里面有作者名称。 这里只说明PHP用法,ASP等其他用法雷同,不再复述。 $str="加密前字符串"; $mi=new COM("encryp.act"); $co=$mi->encode($str); echo($co);//输出加密后的字符串。 $co=$mi-...
DES(Data Encryption Standard)是一种广泛使用的对称加密算法,它基于64位的数据块进行操作,使用56位的密钥。...同时,通过提供的字符串与二进制数据之间的转换函数,使得非二进制数据的加密解密变得更加便捷。
它支持硬件加速,相比于纯软件实现的加密解密过程具有显著的速度优势。这套API特别适合于需要高效处理大量数据的场景,例如视频监控系统、网络通信安全等领域。 ### 加密/解密的重要性 在当今数字化的世界里,信息...
对数据进行单DES或者3DES加密或者解密,如果密码长度为8字节则为DES加密或者解密
这个模块提供了与Java类似的API,可以创建`Cipher`对象并执行加密解密操作。然而,JavaScript中的实现可能需要额外的库,如`crypto-js`,来支持3DES和PKCS7填充。 在实际应用中,为了确保Java和JavaScript之间的互...
DES加密解密算法的C语言实现 DES(Data Encryption Standard)是一种对称密钥 BLOCK 加密算法,使用 56 位密钥对 64 位数据块进行加密。下面是 DES 加密解密算法的 C 语言实现的知识点总结。 字节与二进制转换 在...
CryptoJS提供了完整的DES加密和解密功能,支持CBC(Cipher Block Chaining)和其他模式。以下是一个简单的示例: ```javascript // 导入CryptoJS库 const CryptoJS = require("crypto-js"); // 定义密钥和初始化...
标题中的“3DES加密解密工具”指的是一个用于执行三重数据加密标准(3DES,Triple DES)的软件工具,这种工具通常用于保护敏感数据的安全,确保信息在传输过程中的机密性。3DES是DES(Data Encryption Standard,...
java 3des加密、解密工具类 java的3DES加密/解密
在给定的“des加密例程”中,可能包含了一个调用动态链接库(DLL)实现DES加密解密的示例代码。DLL是Windows操作系统中的一种共享库,可以被多个程序同时调用,节省内存资源并便于代码复用。这个示例可能涉及以下...
这需要创建一个.NET类库项目,实现DES加密解密功能,然后在VBA中通过CreateObject或早绑定的方式调用这些函数。 以下是VB.NET中实现DES加密解密的简单示例代码: ```vbnet Imports System.IO Imports System....
java-des加密解密程序,基于java编写的des,3des加密程序,包括MAC校验,MD5校验等
(1)熟悉相应的DES加密/解密函数的使用,在单机完成对特定文件(test-1.txt)的单重DES加密/解密; (2)针对DES密钥特点(8字节,64比特位,其中真正起作用的为56比特位),设计一次一密的密钥产生机制(即每次...
DES加密/解密类。 加密 加密数据 解密 解密数据 得到随机安全码(哈希加密)。 得到随机哈希加密字符串 哈希加密一个字符串 RSA加密解密及RSA签名和验证 RSA 的密钥产生 产生私钥 和公钥 RSA 方式加密 RSA的解密...
MagicCrypt 是一个 Java/PHP/NodeJS/Rust 库,用于加密/解密字符串、文件或数据,使用数据加密标准 (DES) 或高级加密标准 (AES) 算法。它支持 CBC 分组密码模式、PKCS5 填充和 64、128、192 或 256 位密钥长度。