`
yq2011cm
  • 浏览: 9541 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

DES算法

    博客分类:
  • java
阅读更多
import java.security.SecureRandom; 

import javax.crypto.Cipher; 
import javax.crypto.SecretKey; 
import javax.crypto.SecretKeyFactory; 
import javax.crypto.spec.DESKeySpec; 


public class DESEncryptUtil { 
private static final String PASSWORD_CRYPT_KEY = "_yeyo@z&$975@ga("; 

private final static String DES = "DES"; 

/** 
* 
* 加密 
* 
* @param src 
*            数据源 
* 
* @param key 
*            密钥,长度必须是8的倍数 
* 
* @return 返回加密后的数据 
* 
* @throws Exception 
*/ 
public static byte[] encrypt(byte[] src,byte[] key )throws Exception{ 

// DES算法要求有一个可信任的随机数源 
SecureRandom sr=new SecureRandom(); 
// 从原始密匙数据创建DESKeySpec对象 
DESKeySpec dks=new DESKeySpec(key); 
// 创建一个密匙工厂,然后用它把DESKeySpec转换成一个SecretKey对象 
SecretKeyFactory keyFactory=SecretKeyFactory.getInstance(DES); 
SecretKey secretKey=keyFactory.generateSecret(dks); 
// Cipher对象实际完成加密操作 
Cipher cipher=Cipher.getInstance(DES); 
// 用密匙初始化Cipher对象 
cipher.init(Cipher.ENCRYPT_MODE, secretKey ,sr); 
// 现在,获取数据并加密 

// 正式执行加密操作 
return cipher.doFinal(src); 
} 

/** 
* 
* 解密 
* 
* @param src 
*            数据源 
* 
* @param key 
*            密钥,长度必须是8的倍数 
* 
* @return 返回解密后的原始数据 
* 
* @throws Exception 
*/ 
public static byte[] decrypt(byte[] src , byte[] key)throws Exception{ 

//des算法要求有一个可信任的随机源 
SecureRandom sr=new SecureRandom(); 
//从原始密钥创建一个DESKeySpec对象 
DESKeySpec dks=new DESKeySpec(key); 
//创建一个密钥工厂,然后用它把DESKeySpec转换成一个SecretKey对象 
SecretKeyFactory keyFactory=SecretKeyFactory.getInstance(DES); 
SecretKey secretKey=keyFactory.generateSecret(dks); 
//cipher实现完成解密操作 
Cipher cipher=Cipher.getInstance(DES); 
//用密钥初始化cipher对象 
cipher.init(Cipher.DECRYPT_MODE,secretKey,sr); 
// 现在,获取数据并加密 

// 正式执行解密操作 
return cipher.doFinal(src); 
} 

/** 
* 
* 密码加密 
* 
* @param data 
* 
* @return 
* 
* @throws Exception 
*/ 
public final static String encrypt(String password){ 
try { 

return byte2hex(encrypt(password.getBytes("UTF-8"), 
PASSWORD_CRYPT_KEY.getBytes("UTF-8"))); 
} catch (Exception e) { 

} 

return null; 
} 

/** 
* 
* 密码解密 
* 
* @param data 
* 
* @return 
* 
* @throws Exception 
*/ 

public final static String decrypt(String data) { 

try { 

return new String(decrypt(hex2byte(data.getBytes("UTF-8")), 

PASSWORD_CRYPT_KEY.getBytes("UTF-8"))); 

} catch (Exception e) { 

} 

return null; 

} 

/** 
* 
* 二行制转字符串 
* 
* @param b 
* 
* @return 
*/ 
public static String byte2hex(byte[] b){ 
String hs=""; 
String stmp=""; 
for(int i=0;i<b.length;i++){ 
stmp=java.lang.Integer.toHexString(b[i] & 0XFF); 
if(stmp.length() == 1) 
hs=hs+"0"+stmp; 
else 
hs=hs+stmp; 
} 
return hs.toUpperCase(); 
} 

public static byte[] hex2byte(byte[] b){ 
if((b.length % 2) !=0) 
throw new IllegalArgumentException("长度不是偶数"); 
byte[] b2=new byte[b.length /2]; 
for(int i=0;i<b.length;i+=2){ 
String item=new String(b,i,2); 
b2[i/2]=(byte) Integer.parseInt(item, 16); 
} 
return b2; 
} 
} 


 

 

分享到:
评论

相关推荐

    DES算法 加密算法解密算法

    DES 算法加密算法解密算法 DES 算法概述 DES(Data Encryption Standard)是一种对称密钥块加密算法,由美国 IBM 公司的 W. Tuchman 和 C. Meyer 于 1971-1972 年研制成功。1973 年,美国国家标准局(NBS)公开...

    【老生谈算法】运用Matlab实现DES算法.docx

    在这篇文章中,我们将讨论如何使用 Matlab 实现 DES 加密算法。DES 算法是美国数据加密标准,是一种对称密码体制加密算法。其密钥长度为 56 位,明文按 64 位进行分组,将分组后的明文组和 56 位的密钥按位替代或...

    des算法实验报告

    ### DES算法实验报告知识点 #### 实验目的 本次实验旨在通过编写DES算法代码,深入了解分组密码算法的设计理念及其工作模式。DES(Data Encryption Standard,数据加密标准)是一种广泛使用的对称加密算法,由IBM...

    DES算法具体过程及伪代码

    基于给定文件的信息,我们将详细阐述DES算法的背景、设计理念、应用场景以及它在解决特定问题方面的优势。同时,我们将基于已有的描述,尝试复原文章中可能提到的DES算法的具体过程,并给出相关的伪代码描述。 ### ...

    信息安全DES算法带界面实现

    在本项目中,"信息安全DES算法带界面实现"是一个实验性质的程序,它提供了用户友好的图形界面,使得用户可以直观地进行DES算法的操作,并进行不同进制之间的转换。 DES算法由IBM公司于1970年代初期设计,1977年被...

    DES算法和3DES算法.txt

    本文档描述了DES算法和3DES算法加、解密流程和补位数据规则,供理解学习DES算法和3DES算法。供密码开发相关人员了解最简单的密码算法入门学习使用。

    C++实现3Des算法.zip_3DES算法 C++_3des_C++_visual c_加密算法

    DES是一种对称加密算法,使用56位的密钥对数据进行加密,而3DES是通过三次应用DES算法来提高其安全性,从而提供更强大的加密强度,其密钥长度达到了168位。 在C++中实现3DES算法通常涉及以下几个关键步骤: 1. **...

    基于java实现的des算法

    基于Java实现的DES算法 作为一个IT行业大师,我将从给定的文件中生成相关知识点。 标题:基于Java实现的DES算法 在这个标题中,我们可以看到这个Java程序的主要功能是实现DES(Data Encryption Standard)算法。...

    RSA算法与DES算法的实现

    RSA 算法与 DES 算法的实现 RSA 算法是第一个既能用于数据加密也能用于数字签名的算法,因此它为公用网络上信息的加密和鉴别提供了一种基本的方法。它通常是先生成一对 RSA 密钥,其中之一是保密密钥,由用户保存;...

    DES算法matlab实现

    ### DES算法在MATLAB中的实现 #### 一、概述 数据加密标准(Data Encryption Standard,简称DES)是一种对称密钥算法,用于保护敏感数据的安全传输。它最初由IBM开发,并于1977年被美国国家标准局采纳为官方标准。...

    DES算法C++实现

    本文将详细介绍DES算法的原理以及如何使用C++进行实现,并结合提供的"TestForm"测试类来探讨其实用性。 DES算法基于Feistel结构,由IBM在1970年代初期开发,后来被美国国家标准局(NIST)采纳为数据加密标准。它...

    信息安全des算法实现

    DES算法基于块密码的设计原理,采用64位的数据块和56位的密钥进行操作,通过一系列复杂的数学运算,将明文转换为密文,以保护数据的安全。 描述中的"只有300行的代码"表明这是一个简化的DES算法实现,对于初学者来...

    C语言实现DES算法DES加密算法实验报告.doc

    C语言实现DES算法DES加密算法实验报告.doc

    DES算法原理与实现

    DES算法原理与实现,DES算法原理与实现DES算法原理与实现DES算法原理与c实现

    DES算法的汇编语言程序

    DES算法的主要流程包括初始置换(IP)、16轮迭代运算和逆初始置换(IP-1)。 初始置换(IP)的作用是将64位的明文按照特定规则重新排列,分为L0和R0两部分,每部分32位。IP置换规则是将原始64位数据重新排序,例如...

    des算法的c语言实现(c源代码)

    在C语言中实现DES算法,主要涉及以下几个核心知识点: 1. **密钥扩展**:DES的56位密钥在实际使用中会被扩展成64位,并通过一系列置换和循环移位操作,形成16个子密钥,每个子密钥48位。这个过程称为密钥扩展,包含...

    基于C++的DES算法实现.doc

    基于 C++ 的 DES 算法实现 摘要:本文主要研究了基于 C++ 的 DES 算法实现,旨在解决当前网络环境中的数据加密问题。通过对 DES 算法的原理、优缺点的分析,并编写了 C++ 源代码,实现了数据的加密。研究结果表明,...

    基于C语言的DES算法加密与解密

    在C语言中实现DES算法,可以帮助理解其工作原理,并且为实际项目开发提供基础。 DES算法的核心是Feistel结构,它将原始数据分为左右两半,通过迭代16轮的加密过程,每轮都包含一系列的置换和异或操作。这些操作包括...

    DES算法及流程图

    "DES算法及流程图" DES(Data Encryption Standard)算法是美国IBM公司研制的一种对称加密算法,具有较高的安全性。它是一种迭代分组密码算法,使用最为广泛的加密算法之一。下面对DES算法的基本组成和流程图进行...

    DES算法 课程设计

    "DES 算法课程设计" 在信息安全工程中,DES(Data Encryption Standard)算法是一种对称加密算法,用于保护数据免受未经授权的访问。该算法的设计主要是为了提供一种安全的加密方法,以保护敏感信息免受未经授权的...

Global site tag (gtag.js) - Google Analytics