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

DES加解密之一

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

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class DES {

	Key key;

	public DES(String str) {
		setKey(str);// 生成密匙
	}

	public DES() {
		setKey("testtest");
	}

	/**
	 * 根据参数生成KEY
	 */
	public void setKey(String strKey) {
		try {
			KeyGenerator _generator = KeyGenerator.getInstance("DES");
			_generator.init(new SecureRandom(strKey.getBytes()));
			this.key = _generator.generateKey();
			_generator = null;
		} catch (Exception e) {
			throw new RuntimeException(
					"Error initializing SqlMap class. Cause: " + e);
		}
	}

	/**
	 * 加密String明文输入,String密文输出
	 */
	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) {
			throw new RuntimeException(
					"Error initializing SqlMap class. Cause: " + e);
		} 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) {
			throw new RuntimeException(
					"Error initializing SqlMap class. Cause: " + e);
		} 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) {
			throw new RuntimeException(
					"Error initializing SqlMap class. Cause: " + e);
		} 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) {
			throw new RuntimeException(
					"Error initializing SqlMap class. Cause: " + e);
		} finally {
			cipher = null;
		}
		return byteFina;
	}

	public static void main(String args[]) {
		DES des = new DES();
		// 设置密钥
		// des.setKey("12345678");

		String str1 = "888888";
		// DES加密
		String str2 = des.getEncString(str1);
		String deStr = des.getDesString(str2);
		System.out.println("密文:" + str2);
		// DES解密
		System.out.println("明文:" + deStr);
	}
}

分享到:
评论

相关推荐

    C#实现DES加解密完整类源码

    在IT行业中,加密技术是确保数据安全的重要手段之一。本文将深入探讨C#语言中实现DES(Data Encryption Standard)加解密的完整类源码,以及如何在实际项目中运用这些源码进行数据的安全处理。 DES是一种对称加密...

    visual c++ VC实现3DES加解密 加密解密.zip

    本项目是使用Visual C++实现3DES加解密功能的一个实例,下面将详细介绍3DES算法及其在Visual C++中的实现。 3DES,全称为三重DES,是对DES(Data Encryption Standard)的加强版。DES是一种块密码,采用64位的数据...

    C语言实现Des加解密

    ### C语言实现DES加解密 #### DES简介 DES(Data Encryption Standard,数据加密标准)是一种对称密钥算法,用于加密和解密数据。它最初由IBM开发,并于1977年被美国国家标准局采纳为官方标准。DES算法采用64位块...

    3DES加解密软件共享之

    在本压缩包中的"3DES加解密软件"可能是这样一个工具,允许用户研究3DES算法的工作原理,或者在实际项目中使用3DES进行数据保护。用户可以下载并使用这个软件,了解3DES加密的过程,同时也可以进行实践操作,加深对...

    DES加密解密类

    - **S盒**: 是DES算法的核心组件之一,用于实现非线性变换,提高算法的安全性。每个S盒都是一个6×4的矩阵,根据输入选择特定位置的值作为输出。 - **示例**: 提供的代码中包含了一个4个S盒的示例,每个S盒都有不同...

    delphi7 加解密DES

    在IT行业中,加密技术是保护数据安全的重要手段之一,而DES(Data Encryption Standard)是一种广泛使用的对称加密算法。在Delphi7这个经典的面向对象的编程环境中,开发人员可以利用其强大的VCL库来实现DES的加解密...

    C# 实现3des加密解密

    在IT领域,数据安全至关重要,而密码学是保护数据安全的重要手段之一。在这个场景中,我们关注的是使用C#语言实现的3DES(Triple Data Encryption Standard)加密和解密技术,以及结合MAC(Message Authentication ...

    des文件加密解密

    DES是一种古老的块密码算法,由美国国家标准局在1970年代提出,是最早广泛采用的对称加密算法之一。 在描述中提到的“des文件加密”过程,是指使用DES算法将一个明文文件转化为密文的过程。这个过程中,首先需要一...

    DES加密解密实例网络安全传输系统

    DES由IBM公司开发,于1977年被美国国家标准局(NIST)采纳为标准,它是最早的现代块加密算法之一,至今仍被用作理解对称加密原理的基础。 DES加密算法基于Feistel结构,它将64位的数据块分为左半部分L和右半部分R,...

    java php DES 加密解密

    它们都支持各种加密算法,其中之一是DES(Data Encryption Standard)。DES是一种对称加密算法,适用于保护数据的安全性,尤其是在不安全的网络环境中。在这个主题中,我们将深入探讨Java和PHP如何实现DES加密解密。...

    MFC编的DES加密解密程序

    - **加密**:这是程序的主要功能之一,将明文转换成密文,保护信息不被未经授权的人访问。 - **解密**:与加密相对,程序还提供了将密文还原为原始明文的功能。 **压缩包子文件的文件名称列表**: "DES" 这个...

    JAVA实现3DES加密解密

    在IT行业中,加密技术是确保数据安全的重要手段之一。3DES(Triple Data Encryption Algorithm)是一种广泛应用的对称加密算法,基于DES(Data Encryption Standard)并增强了其安全性。本篇文章将探讨如何使用Java...

    基于Java实现的加解密方法(DES、3DES、AES)以及五种分组密码工作模式

    3. **AES算法**:AES是目前最广泛使用的对称加密算法之一,由NIST(美国国家标准与技术研究院)于2001年标准化。它支持128、192和256位的密钥长度,加密速度快且安全性高。AES使用的是替换和置换相结合的Rijndael...

    C++ 利用openssl实现DES的CBC模式加解密

    DES是一种广泛使用的对称加密算法,而CBC模式是其工作模式之一,能够提供更高的安全性。 DES是一种块加密算法,它使用56位的密钥对64位的数据块进行加密。由于原始DES的密钥长度较短,现代安全标准倾向于使用更强大...

    DES加密解密JS版

    它使用56位的密钥对数据进行加密和解密,是最早广泛使用的加密算法之一。在JS版的DES加密解密中,我们可以看到JavaScript语言被用来实现这一功能,这对于Web应用中的安全通信非常有用。 DES加密过程分为以下几个...

    DES加密解密字符串的JAVA实现(lp)

    DES算法使用一个56位的密钥以及附加的8位奇偶校验位,产生最大64位的分组长度,它是一种广泛使用的对称加密算法之一。 本篇文章基于提供的代码片段,详细介绍如何在Java中实现DES加密解密字符串的功能。该实现主要...

    对字符串进行 DES 加密解密的实现代码

    在IT领域,数据安全是至关重要的,而对字符串进行加密解密是保护敏感信息的常见手段之一。本文将深入探讨如何使用DES(Data Encryption Standard)算法对字符串进行加密和解密,这是一种广泛应用的对称加密算法。...

    java与delphi 通用 DES加解密(源代码)

    本文将深入探讨Java和Delphi中实现DES加解密的源代码,以及如何实现这两个不同平台之间的互操作性。 DES算法是在1970年代由IBM开发,后来被美国国家标准局(NIST)采纳为标准。它基于64位的数据块进行操作,使用56...

    封装好的3DES加解密DLL

    标题中的“封装好的3DES加解密DLL”指的是一个预编译并封装为动态链接库(DLL)的软件组件,该组件提供了3DES(Triple DES)加密和解密功能。3DES是数据加密标准(DES)的一个变种,它通过三次应用DES算法来提高安全...

    实现3DES加解密的简单实现代码

    在IT领域,加密技术是确保数据安全的重要手段之一。3DES(Triple Data Encryption Standard)是一种广泛应用的对称加密算法,它是基于DES(Data Encryption Standard)的加强版,为了解决DES较短密钥的安全性问题而...

Global site tag (gtag.js) - Google Analytics