import java.security.Key;
import javax.crypto.Cipher;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESedeKeySpec;
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
/**
* 加密解密工具
*/
public class DesEncrypt {
private Key key;
private static final String KEY_ALGORITHM = "DESede";
private static final String CIPHER_ALGORITHM = "DESede/ECB/PKCS5Padding";
/**
* 默认构造函数
*/
public DesEncrypt() {
}
/**
* 构造函数,初始化Key
* @param keyStore
*/
public DesEncrypt(String keyStore) {
this.toKey(keyStore);
}
/**
* 初始化Key对象
* @param keyText
* @return
*/
public void toKey(String keyText) {
DESedeKeySpec dks;
SecretKeyFactory factory =null;
if(check(keyText)){
try {
dks = new DESedeKeySpec(keyText.getBytes());
factory= SecretKeyFactory.getInstance(KEY_ALGORITHM);
this.key = factory.generateSecret(dks);
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
*
* @param 密钥keyText
* @return 校验密钥格式是否通过
*/
public boolean check(String keyText){
boolean flag = false ;
if(keyText!=null&&!"".equals(keyText.trim())){
if(keyText.trim().length()>=24){
flag = true ;
}
}
return flag ;
}
/**
* 加密
* @param 明文 inputText
* @return 密文 outputText
*/
public String getEncString(String inputText) {
Cipher cipher = null;
String outputText = null ;
try {
cipher =Cipher.getInstance(CIPHER_ALGORITHM) ;
cipher.init(Cipher.ENCRYPT_MODE, this.key) ;
outputText= Base64.encode(cipher.doFinal(inputText.getBytes("UTF8")));
} catch (Exception e) {
e.printStackTrace();
}finally{
cipher= null;
}
return outputText;
}
/**
* 解密
* @param 密文 inputText
* @return 明文 outputText
*/
public String getDesString(String inputText) {
Cipher cipher = null;
String outputText = null ;
try {
cipher =Cipher.getInstance(CIPHER_ALGORITHM) ;
cipher.init(Cipher.DECRYPT_MODE, this.key) ;
outputText= new String(cipher.doFinal(Base64.decode(inputText)));
} catch (Exception e) {
e.printStackTrace();
}finally{
cipher= null;
}
return outputText;
}
}
java在调用Base64后会自动换行,可添加replaceAll("\r","").replaceAll("\n","")
分享到:
相关推荐
在Java中,我们可以使用`javax.crypto`包中的`Cipher`类来实现3DES加密和解密。首先,我们需要创建一个`SecretKeySpec`对象,用于存储我们的密钥。密钥长度可以是128位(16字节),但3DES实际只使用其中的112位或168...
Java 实现文件的 RSA 和 DES 加密 在现代密码技术中,根据密钥类型的不同,可以将其分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。对称加密算法用来对敏感数据等信息进行加密,常用的...
本程序是java语言实现的DES加密算法的实例。
总的来说,通过Java实现3DES加密解密,我们需要理解加密算法的基本原理,熟悉Java的相关加密库,并掌握如何生成和使用密钥。在实际开发中,确保数据的安全性至关重要,因此正确地使用加密技术是每个IT专业人员必备的...
在本示例中,我们将展示如何使用 3DES 算法在 Java 中实现加密和解密操作,并封装 byte 数组和 16 进制字符串之间的互转。 Java 中的 3DES 加密算法 在 Java 中,我们可以使用 javax.crypto 包中的 Cipher 类来...
以上就是关于"java_3des加密源码"的相关知识点,这个源码文件应该包含了实现3DES加密和解密功能的核心逻辑,对于理解和使用3DES在Java中进行数据保护非常有帮助。在实际应用中,还需要考虑密钥管理、错误处理和安全...
在Java中,实现DES加密通常需要使用`javax.crypto`包中的类,如`KeyGenerator`用于生成密钥,`Cipher`用于执行加密和解密操作,以及`SecretKeySpec`用于创建密钥对象。以下是一个简单的Java DES加密的步骤: 1. **...
总的来说,Java实现DES加密涉及到了对称加密的概念、DES算法的原理、Java的加密API使用,以及Base64编码。理解并掌握这些知识点对于进行数据安全编程至关重要。在编写和使用这类工具类时,应确保密钥管理的安全性,...
Java 3des加密算法ECB模式,亲测完美通过。目前网上的大部分算法都通不过或者加进Base64之类的,还要不下载其它jar包。而代码使用时直接下载运行,无须配置和下载额外的jar包 ,只需换上自己的密钥和待加密的数据...
主要介绍了使用java自带des加密算法实现文件加密和字符串加密的示例,需要的朋友可以参考下
在实际应用中,DES通常与其他加密技术结合使用,如Triple DES(3DES),它通过执行三次DES加密以增强安全性。此外,现代的加密标准如AES(Advanced Encryption Standard)已经取代了DES,因为其具有更大的密钥长度和...
在Java中,我们通常使用`javax.crypto`包来实现DES加密。以下是一些关键步骤和知识点: 1. 导入必要的库: ```java import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.spec....
本篇将详细介绍如何在网页前端使用JavaScript进行3DES加密,并在后端Java环境中进行解密。 一、3DES加密原理 3DES是DES的加强版,它使用了3个不同的56位密钥,通过3次独立的DES加密过程来提高安全性。具体流程如下...
以下是使用Java实现DES加密的步骤: 1. **生成密钥**: 首先,我们需要一个密钥。在Java中,我们使用`KeyGenerator`类生成DES密钥。代码示例: ```java KeyGenerator keyGen = KeyGenerator.getInstance("DES")...
在Java中实现3DES加密和解密涉及到以下几个关键点: 1. **密钥生成**:在Java中,你可以使用`java.security.KeyGenerator`类来生成3DES密钥。首先需要实例化一个`KeyGenerator`对象,然后调用`init()`方法初始化它...
用Java实现的DES算法,可对文件进行加密解密
在Java中,可以使用`Cipher.getInstance("DESede/CBC/PKCS5Padding")`进行3DES加密。 4. **RSA( Rivest-Shamir-Adleman)** RSA是一种非对称加密算法,基于大整数因子分解的困难性。它有两个密钥:公钥用于加密,...
本教程主要探讨了如何使用Java编程语言实现DES(Data Encryption Standard)、3DES(Triple DES)和AES(Advanced Encryption Standard)这三种常见的对称加密算法,并且详细讲解了五种分组密码的工作模式。...
在C语言中实现3DES加密算法,可以确保在不同平台上的兼容性和一致性,尤其对于需要跨平台操作的应用场景,如将C语言代码移植到Android平台,通过JNI接口与Java代码交互,能够很好地解决加解密结果不一致的问题。...
3des加密 java