在加解密操作时,密文总是8的倍数,比如明文有51个字节,加密后就会有56个字节,des会自动加上其它字符(空格)来补上,所以加密解密前内容可能有些不一样,需要注意.
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
public class DES1 {
private final static String KEY="111111111";//字节数必须是8的整数倍
/**
* 加密
* @param src 要加密的字符串
* @return
* @throws Exception
*/
public static String encrypt(String src) throws Exception{
//DES算法要求有一个可信任的随机数源
SecureRandom sr=new SecureRandom();
//创建一个 DESKeySpec 对象,指定一个 DES 密钥
DESKeySpec ks=new DESKeySpec(KEY.getBytes());
//生成指定秘密密钥算法的 SecretKeyFactory 对象。
SecretKeyFactory skf=SecretKeyFactory.getInstance("DES");
//利用密钥工厂把DESKeySpec转换成一个SecretKey对象
SecretKey sk=skf.generateSecret(ks);
//Cipher对象实际完成加解密操作
Cipher cip=Cipher.getInstance("DES");
//用密钥和随机源初始化此 cipher
cip.init(Cipher.ENCRYPT_MODE, sk,sr);
//doFinal 按单部分操作加密或解密数据,在调用byteToHex 转换为16进制字符串
String dest=byteToHex(cip.doFinal(src.getBytes()));
return dest;
}
/**
* 解密
* @param src
* @return
* @throws Exception
*/
public static String decrypt(String src)throws Exception{
SecureRandom sr=new SecureRandom();
DESKeySpec ks=new DESKeySpec(KEY.getBytes());
SecretKeyFactory skf=SecretKeyFactory.getInstance("DES");
SecretKey sk=skf.generateSecret(ks);
Cipher cip=Cipher.getInstance("DES");
//下面和上面的加密就不同了
cip.init(Cipher.DECRYPT_MODE, sk,sr);
//先将16进制字符串转换为字节数组,在调用doFinal解密
String dest=new String(cip.doFinal(hexToByte(src)));
return dest;
}
//字节数组转换为16进制字符串
public static String byteToHex(byte[] bs){
String str="";
for(int i=0;i<bs.length;i++){
String s=Integer.toHexString(bs[i]);
int len=s.length();
if(len==1){ //长度只有一位在前面补0
s="0"+s;
}else{ //长度大于2位是因为Integer是16位的,所以截取后2位
s=s.substring(len-2);
}
str+=s;
}
return str;
}
//为16进制字符串转换字节数组
private static byte[] hexToByte(String hex){
byte[] srcBs=hex.getBytes();
byte[] desBs=new byte[srcBs.length/2];
for(int i=0;i<srcBs.length;i+=2){
byte b=(byte)Integer.parseInt(new String(srcBs,i,2),16);
desBs[i/2]=b;
}
return desBs;
}
public static void main(String[] args) throws Exception{
//加密
String des=encrypt("my name is 有小平");
System.out.println(des);
//解密
String decrypt=decrypt(des);
System.out.println(decrypt);
}
}
分享到:
相关推荐
"java实现文件加密解密" Java 实现文件的加密与解密是指利用 Java 语言将资源文件(包括图片、动画等类型)进行简单的加密和解密。这种策略的原因和好处是将准备好的资源存储在云上,使用时通过网络进行读取即可,...
《深入理解ENC文件加密解密工具:以PrimaSoft Encryption Utility为例》 在信息安全日益重要的今天,文件加密解密工具成为保护数据隐私的关键工具。"ENC文件加密解密工具",特别是PrimaSoft Encryption Utility,是...
本项目"文件加密解密(完整项目)"专注于利用C#进行文件的安全处理,确保数据在传输和存储时的隐私性。 一、C#加密技术基础 C#中实现文件加密主要依赖于.NET Framework提供的加密类库,如System.Security....
文件的加密解密,一些流的操作,流的加密....DES;文件的加密解密,一些流的操作,流的加密....DES
文件加密解密系统是一种用于保护数据安全的重要工具,它能够对个人或组织的敏感信息进行加密,确保在传输或存储时不受未经授权的访问。在这个信息化的时代,数据安全已经成为企业和个人都必须关注的问题,因此,了解...
2. **数据预处理**:可能需要将文本数据转换为二进制形式,以便于加密操作。 3. **选择加密算法**:根据所选的加密算法,对数据进行相应的加密操作。 4. **密文存储**:将加密后的数据写入新的文件,或者覆盖原文件...
在这个特定的案例中,"MFC实现文本文件加密解密"是一个使用MFC框架编写的程序,它允许用户对文本文件进行加密和解密操作,确保敏感数据在传输或存储时的安全性。 在VC2010环境下,开发者通常会利用MFC的类库,如...
【标题】"全能文件加密解密源码.zip"是一个包含Visual Studio工程的压缩包,它提供了C#语言编写的源代码,用于实现文件的加密和解密功能。这个项目对于那些想要深入理解加密和解密机制,或者需要在自己的应用程序中...
总之,通过使用这个RSA加密解密工具并遵循操作指南,用户可以有效地保护他们的敏感文件,防止未经授权的访问。同时,了解RSA加密的基本原理和操作流程,也有助于提升用户的信息安全意识和技能。
MD5 单向加密 SHA1 单向加密 DES 双向,可解密 加密字符串 ...RSA加密解密及RSA签名和验证 RSA 的密钥产生 产生私钥 和公钥 RSA 方式加密 RSA的解密函数 获取Hash描述表 RSA签名 RSA 签名验证
**C# RSA加密解密详解** 在信息安全领域,加密技术是一种至关重要的手段,用于保护数据的隐私和安全性。RSA(Rivest-Shamir-Adleman)算法是一种非对称加密算法,广泛应用于网络通信、数据存储等领域。C#作为.NET...
综上所述,VB6的这个加密解密程序是一个实用的工具,结合了DES和AES这两种强大的加密算法,支持用户自定义密钥,且具备文件级别的加密解密功能。它不仅提供了基本的数据安全措施,而且在VB6环境中易于理解和使用,...
二、易飞用户加密解密系统 “易飞用户加密解密”可能指的是易飞公司提供的一个针对用户数据进行加解密的服务或工具,如EFPASS.exe这个文件所示,它可能是一个执行程序,用于用户数据的安全管理。 三、加密算法 ...
文件加密解密代码
本文将深入探讨“文件加密解密软件”的基础知识、工作原理以及如何选择和使用这类软件。 首先,让我们理解文件加密的基本概念。文件加密是一种通过特定算法将文件中的数据转化为无法直接读取的形式,这一过程称为...
总的来说,"小锁匠"是一款实用的文件加密解密工具,适用于需要批量处理文件安全的场景。其基于.NET Framework开发,可能采用了对称加密算法,并提供了源码供用户研究和定制。在使用时,用户应确保计算机已安装了合适...
"实用小程序 全文件加密解密文件加密解密"这个标题暗示了我们关注的是一个用于保护文件安全的小程序,它提供了文件的加密和解密功能。这类工具通常用于确保敏感数据在传输或存储时不被未经授权的人员访问。 描述中...
这个程序应当包含了上述知识点的具体应用,你可以通过阅读源代码、编译和运行来进一步理解和学习AES加密解密的实现细节。这个实战例程可以帮助开发者更好地掌握Qt环境下的加密解密操作,提高数据安全保护能力。
在C#编程环境中,处理XML文件的加密和解密是一项重要的任务,特别是在处理敏感数据时。XML文件因为其结构清晰、易于解析而被广泛应用,但同时也需要妥善保护以防止未授权访问。以下是对C#中XML文件加密和解密的详细...
根据提供的文件信息,本文将对"C语言文件加密解密系统"进行详细解析,重点在于理解其功能、工作原理以及核心代码实现。 ### C语言文件加密解密系统 #### 概述 该系统是一个基于C语言编写的文件加密解密工具,能够...