JAVA实现DES加解密实现详解

简介:

DES加密介绍
       DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。DES加密算法出自IBM的研究,后来被美国政府正式采用,之后开始广泛流传,但是近些年使用越来越少,因为DES使用56位密钥,以现代计算能力,24小时内即可被破解。     虽然如此,在某些简单应用中,我们还是可以使用DES加密算法,本文简单讲解DES的JAVA实现
。注意:DES加密和解密过程中,密钥长度都必须是8的倍数

packageutil;

importjava.security.SecureRandom;
importjavax.crypto.spec.DESKeySpec;
importjavax.crypto.SecretKeyFactory;
importjavax.crypto.SecretKey;
importjavax.crypto.Cipher;
publicclassDES{
publicDES(){
}
//测试
publicstaticvoidmain(Stringargs[]){
//待加密内容
Stringstr="测试内容";
//密码,长度要是8的倍数
Stringpassword=

"9588028820109132570743325311898426347857298773549468758875018579537757772163084478873699447306034466200616411960574122434059469100235892702736860872901247123456";
byte[]result=DES.encrypt(str.getBytes(),password);
System.out.println("加密后:"+newString(result));

//直接将如上内容解密
try{
byte[]decryResult=DES.decrypt(result,password);
System.out.println("解密后:"+newString(decryResult));
}catch(Exceptione1){
e1.printStackTrace();
}

}

/**
*加密
*@paramdatasourcebyte[]
*@parampasswordString
*@returnbyte[]
*/
publicstaticbyte[]encrypt(byte[]datasource,Stringpassword){
try{
SecureRandom random=new SecureRandom();
DESKeySpec desKey=new DESKeySpec(password.getBytes());
//创建一个密匙工厂,然后用它把DESKeySpec转换成
SecretKeyFactory keyFactory=SecretKeyFactory.getInstance("DES");
SecretKey securekey=keyFactory.generateSecret(desKey);
//Cipher对象实际完成加密操作
Ciphercipher=Cipher.getInstance("DES");
//用密匙初始化Cipher对象
cipher.init(Cipher.ENCRYPT_MODE,securekey,random);
//现在,获取数据并加密
//正式执行加密操作
returncipher.doFinal(datasource);
}catch(Throwablee){
e.printStackTrace();
}
returnnull;
}
/**
*解密
*@paramsrcbyte[]
*@parampasswordString
*@returnbyte[]
*@throwsException
*/
publicstaticbyte[]decrypt(byte[]src,Stringpassword)throwsException{
//DES算法要求有一个可信任的随机数源
Secure Random random=newSecureRandom();
//创建一个DESKeySpec对象
DESKeySpecdesKey=newDESKeySpec(password.getBytes());
//创建一个密匙工厂
SecretKeyFactorykeyFactory=SecretKeyFactory.getInstance("DES");
//将DESKeySpec对象转换成SecretKey对象
SecretKey securekey=keyFactory.generateSecret(desKey);
//Cipher对象实际完成解密操作
Cipher cipher=Cipher.getInstance("DES");
//用密匙初始化Cipher对象
cipher.init(Cipher.DECRYPT_MODE,securekey,random);
//真正开始解密操作
returncipher.doFinal(src);
}
}

相关文章
|
2月前
|
算法 安全 Java
Java 实现 RSA 非对称加密算法-加解密和签名验签
Java 实现 RSA 非对称加密算法-加解密和签名验签
|
3月前
|
Java 数据安全/隐私保护
Java 中使用 OpenSSL 生成公钥私钥进行数据加解密
Java 中使用 OpenSSL 生成公钥私钥进行数据加解密
64 0
|
4月前
|
算法 搜索推荐 Java
DES - 对称加密算法简要介绍与JAVA实现
DES - 对称加密算法简要介绍与JAVA实现
53 2
|
2月前
|
存储 算法 安全
java des加解密啊
【2月更文挑战第8天】
|
9月前
|
算法 安全 Java
【算法】Java实现DES算法
DES(Data Encryption Standard)是一种对称密钥加密算法,它是在1977年被美国国家标准局(NBS,现在的NIST)发布的。
206 0
|
6月前
|
算法 Java 关系型数据库
JSP基于DES算法管理系统myeclipse开发mysql数据库web结构java编程jsp展现
JSP 基于DES算法管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,mysql数据库存储,系统主要采用B/S模式开发。
39 0
|
10月前
|
算法 Java
java的DES和3DES加解密算法
java的DES和3DES加解密算法
|
10月前
|
算法 Java
java 版DES和MAC算法
java 版DES和MAC算法
|
11月前
|
算法 Java 数据安全/隐私保护
最新版-Python和Java实现Aes相互加解密
最新版-Python和Java实现Aes相互加解密
192 0
|
编解码 前端开发 算法
前端CryptoJS和Java后端数据互相加解密(AES)
最近刚好在做一个简单的保险代理人运营平台,主要是为了方便个人展业,由于有些客户数据比较敏感,所以在用户登录时准备对登录密码进行一波加密后再传输。
前端CryptoJS和Java后端数据互相加解密(AES)