package cn.com;
import java.security.Key;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/**
*
* 使用DES加密与解密,可对byte[],String类型进行加密与解密 密文可使用String,byte[]存储.
*
* 方法: void getKey(String strKey)从strKey的字条生成一个Key
*
* String getEncString(String strMing)对strMing进行加密,返回String密文 String
* getDesString(String strMi)对strMin进行解密,返回String明文
*
* byte[] getEncCode(byte[] byteS)byte[]型的加密 byte[] getDesCode(byte[]
* byteD)byte[]型的解密
*/
public class DesEncrypt {
Key key;
/**
* 根据参数生成KEY
*
* @param strKey
*/
public void getKey(String strKey) {
try {
KeyGenerator _generator = KeyGenerator.getInstance("DES");
_generator.init(new SecureRandom(strKey.getBytes()));
this.key = _generator.generateKey();
_generator = null;
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 加密String明文输入,String密文输出
*
* @param strMing
* @return
*/
public String getEncString(String strMing) {
byte[] byteMi = null;
byte[] byteMing = null;
String strMi = "";
BASE64Encoder base64en = new BASE64Encoder();
try {
byteMing = strMing.getBytes("UTF8");
byteMi = this.getEncCode(byteMing);
strMi = base64en.encode(byteMi);
} catch (Exception e) {
e.printStackTrace();
} finally {
base64en = null;
byteMing = null;
byteMi = null;
}
return strMi;
}
/**
* 解密 以String密文输入,String明文输出
*
* @param strMi
* @return
*/
public String getDesString(String strMi) {
BASE64Decoder base64De = new BASE64Decoder();
byte[] byteMing = null;
byte[] byteMi = null;
String strMing = "";
try {
byteMi = base64De.decodeBuffer(strMi);
byteMing = this.getDesCode(byteMi);
strMing = new String(byteMing, "UTF8");
} catch (Exception e) {
e.printStackTrace();
} finally {
base64De = null;
byteMing = null;
byteMi = null;
}
return strMing;
}
/**
* 加密以byte[]明文输入,byte[]密文输出
*
* @param byteS
* @return
*/
private byte[] getEncCode(byte[] byteS) {
byte[] byteFina = null;
Cipher cipher;
try {
cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, key);
byteFina = cipher.doFinal(byteS);
} catch (Exception e) {
e.printStackTrace();
} finally {
cipher = null;
}
return byteFina;
}
/**
* 解密以byte[]密文输入,以byte[]明文输出
*
* @param byteD
* @return
*/
private byte[] getDesCode(byte[] byteD) {
Cipher cipher;
byte[] byteFina = null;
try {
cipher = Cipher.getInstance("DES");
cipher.init(Cipher.DECRYPT_MODE, key);
byteFina = cipher.doFinal(byteD);
} catch (Exception e) {
e.printStackTrace();
} finally {
cipher = null;
}
return byteFina;
}
public static void main(String[] args) {
System.out.println("des demo");
DesEncrypt des = new DesEncrypt();// 实例化一个对像
des.getKey("1234567");// 生成密匙
System.out.println("key=1234567");
String strEnc = des.getEncString("CHINA");// 加密字符串,返回String的密文
System.out.println("密文=" + strEnc);
String strDes = des.getDesString(strEnc);// 把String 类型的密文解密
System.out.println("明文=" + strDes);
}
}
/*
* 运行结果: des demo key=MYKEY11 密文=n2r7F/mmYiY= 明文=CHINA
*/
分享到:
相关推荐
java加密和解密的方法,利用指定的密钥,可逆的。密钥必须16位。
Java加密解密工具是开发过程中不可或缺的部分,尤其是在处理敏感数据时,确保数据的安全性至关重要。在Java中,我们可以使用各种库和内置API来实现加密和解密操作。本篇文章将深入探讨Java加密解密的核心概念、常用...
标题中的"C# IKVM 生成 java AES 密钥并加解密"是指在C#项目中,通过IKVM调用Java的AES加密算法来生成密钥并进行数据的加解密。AES(Advanced Encryption Standard)是一种广泛使用的对称加密算法,适用于保护大量...
【基于JAVA文件加解密的实验报告】 本报告聚焦于使用Java进行文件加解密的实践,主要涉及了面向对象程序设计(JAVA)课程设计,选题为文件加解密。设计目标包括利用特定加密算法对文本文件进行加密和解密,支持RSA...
本文详细介绍了Java实现的RSA加密解密算法,包括密钥对生成、公钥和私钥的使用、加密和解密、密钥文件的生成等知识点。这些知识点对于Java开发者来说非常重要,可以帮助他们更好地理解和实现RSA加密解密算法。
Java作为一种广泛使用的编程语言,提供了丰富的工具和库来实现数据的加密和解密。本实例将聚焦于JAVA数据加密解密的实践应用。 首先,让我们理解加密和解密的基本概念。加密是一种将明文(可读信息)转化为密文(不...
7. **加解密接口**:JCT可能提供了一套统一的API,使得开发者能够方便地调用各种加密算法,而无需深入了解底层实现细节。 8. **文档和源代码**:压缩包中的`jct_doc.zip`可能是JCT工具包的API文档,对于理解和使用...
而在Java中,我们可以利用`java.security`包中的`KeyPairGenerator`,`PublicKey`,`PrivateKey`等类来生成和管理密钥,`Cipher`类则用于实际的加解密操作。 对于"PHP_JAVA_RSA互通加解密"项目,关键在于两个平台间...
java实现的RC4加密解密算法示例提供了一个简单的加密和解密解决方案,但是在实际应用中,需要根据具体情况选择合适的加密算法和密钥管理策略。 此外,本站还提供了各种在线加密解密工具,包括MD5在线加密工具、哈希...
Java加密解密技术在软件开发中扮演着至关重要的角色,特别是在数据安全领域。3DES(Triple Data Encryption Standard)是一种常见的加密算法,它基于DES(Data Encryption Standard)并对其进行了加强,提高了安全性...
在Java中实现AES(Advanced Encryption Standard)加密和解密算法主要涉及到对称密钥加密技术。AES算法是一种块密码,采用固定大小的128位(16字节)块进行加密和解密,支持128、192和256位的密钥长度。在给定的代码...
- **加密密钥和解密密钥**:加密算法和解密算法的操作是在一组密钥(key)的控制下进行的。通常密钥分为加密密钥和解密密钥。 ### 常见的加密算法 #### 对称加密算法 对称加密算法使用相同的密钥进行加密和解密。...
2. **Java后台AES加解密**:在Java中,首先需要创建一个`SecretKeySpec`对象,它包含了加密密钥,然后使用`Cipher`类的`init()`方法初始化加密或解密模式,最后调用`doFinal()`方法进行实际的加密或解密操作。...
在Java编程环境中,处理文件的压缩与解压缩是常见的任务,而涉及到安全性,加密和解密就显得尤为重要。本文将详细讲解如何使用Java实现ZIP压缩包的加密与解密。 首先,我们需要理解加密的基本概念。加密是将明文...
这种算法基于大整数因子分解的困难性,使得只有持有正确密钥的人才能解密信息,从而保障了数据的安全性。 在Java中实现RSA加密解密,需要使用Java Cryptography Extension (JCE)库。以下是使用RSA加密解密的基本...
本篇主要介绍如何使用Java生成RSA密钥对,进行数据的加密与解密,以及如何处理超长字符的分区问题。 RSA是一种非对称加密算法,它基于两个不同的密钥:公钥和私钥。公钥用于加密,而私钥用于解密。这种机制使得只有...
在Java编程语言中,加密和解密是网络安全和数据保护的重要组成部分。本教程"JAVA加密解密-3"聚焦于如何在Java环境中实现文件的加密和解密功能。以下是一些核心知识点: 1. **加密的基本概念**:加密是将明文数据...
一个很有用的java加密,解密算法,带有密钥,加密解密必须使用相同的密钥。
BouncyCastle,又称BC,是一个开源的Java安全包,提供了广泛的密码学功能,包括但不限于加解密、数字签名、证书管理以及哈希算法。标题提到的"BouncyCastle加解密包15on-1.60"指的是该库的一个特定版本,版本号为...
标题中的“java和C#通用des3加解密”指的是在Java和C#这两种不同的编程语言中实现DES(Data Encryption Standard)的加强版——3DES(Triple DES)加解密算法。3DES是一种广泛使用的对称加密算法,通过三次应用DES的...