`
leon1509
  • 浏览: 527632 次
  • 性别: 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);
	}
}

分享到:
评论

相关推荐

    DES.rar_DES JAVA_DES加 解密_Java 8_des_服务器

    DES算法要求加密密钥和解密密钥一致。密钥所需的字节数祖长度为8位。基于对需求的理解,密钥由客户设定,在加密和解密的时候,在服务器端输入一密钥达到文件的加密需求,在终端输入同一密钥达到加密文件的解密需求。...

    MD5 & DES & RSA 加密解密

    winform做的一个小工具(源码),包括MD5加密、DES加密解密,RSA公钥密钥生成,RSA加密解密这几个功能。 pc6上找到的,不知道原作者是谁,感谢之。

    PHPCSharp-DES MD5 加密解密程序源码

    超级加解密转换工具 此程序由Microsoft Visual Studio 2010方可打开源码运行 EnDnpassword文件夹是加密主程序源码 Password文件夹是加密算法实现的源码和封装后的dll 两种加密算法。一种是DES,一种位MD5加密...

    DES_加密解密算法的C++实现--实验报告

    其中之一就是1971年美国学者塔奇曼(Tuchman)和麦耶(Meyer)根据信息论创始人香农(Shannon)提出的“多重加密有效性理论”创立的,后于1977年由美国国家标准局颁布的数据加密标准。 DES密码实际上是Lucifer密码...

    DES加密解密算法之python实现版(图文并茂)

    1980年,美国国家标准局(ANSI)赞同DES作为私人使用的标准,称之为DEA(ANSI X.392) 1983年,国际化标准组织ISO赞同DES作为国际标准,称之为DEA-1 该标准规定每五年审查一次,计划十年后采用新标准 最近的一次评估...

    Android数据加密之Des加密

    前言:  ... DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。DES加密算法出自IBM的研究, 后来被美国政府正式采用,之后开始广泛流传,但是近些年使用越来越少,因为D

    加解密软件之加密精灵

    主要功能模块:快速加解密,伪装加解密,安全解加密,移动加解密,登陆密码管理等。  ◇简洁易用◇是本软件的特色的,本软件专注于文件夹加密,未设置与此无关的功能,并对有关功能作了简洁的说明,保证了使用的...

    关于Java中常用加密/解密方法的实现

    一、常用的加密/解密算法 1.Base64  严格来说Base64并不是一种加密/解密算法,而是一种编码方式。Base64不生成密钥,通过Base64编码后的... AES是现在对称加密算法中最流行的算法之一。 代码下载后,导入即可运行

    基于VC++基础上仿射加密\RSA加密\DES加密的文件加密系统

    这是一个基于VC++基础上的仿射加密\RSA加密\DES加密的文件加密系统,使用MFC使之界面化,操作易懂,对学习VC++绝对有很好的参考价值。除个别文件类型外,一般文件加密后,再解密后大体可以恢复原文件内容.......

    AES.zip_26/11_AES_DES加密_加密

    可以实现任意文件的加密解密。高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用...2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。

    【图像加密】基于matlab低对称密码算法图像加密解密【含Matlab源码 2794期】.zip

    CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,...

    华科密码学课设之DES算法实现

    华科2014届密码学课设,DES的加解密算法实现,java版本,除了一个加解密一个数字的demo之外还实现了文件的加解密

    【数字信号加密解密】基于matlab DES二进制数字信号加密解密【含Matlab源码 3785期】.zip

    CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,...

    PGP加密解密技术初探与实践

    是基于一种公钥原理 (Public Key)——RSA 的软件, 公钥理论是在 1976 年 Whitfield Diffle 及 Martin Hellman 共同提出的,1977 年由三位 MIT 教授建立了实际方法, 于是大家利用他们的名字称之为Rivest-Shamir-...

    RSA加密解密算法C语言源代码

    正是基于这种理论,1978年出现了著名的RSA算法,它通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。为提高保密强度,RSA密钥至少为500位长,...

    Android数据加密之Des加密详解

    DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。DES加密算法出自IBM的研究, 后来被美国政府正式采用,之后开始广泛流传,但是近些年使用越来越少,因为DES使用56位密钥,以现代计算...

    密码学实验一:DES加密算法C++

    密码学加密算法之DES加密算法。包括.c,.h,.exe可执行程序。Simple interface with inputs (M, K)/(C, K) and output (C)/(M) is required in the program. All data are presented in the hexadecimal format.

    C++中四种加密算法之DES源代码

    在大多数对称算法中,加解密的密钥是相同的,DES就是这样。可见,对称密钥算法的加解密密钥都是保密的。而公开密钥算法的加密密钥是公开的,解密密钥是保密的。 DES具体算法如下: //////////////////////////////...

    DES数据加密

    一个好的加密算法的重要特点之一是具有这种能力:可以指定一个密码或密钥,并用它来加密明文,不同的密码或密钥产生不同的密文。这又分为两种方式:对称密钥算法和非对称密钥算法。所谓对称密钥算法就是加密解密都...

Global site tag (gtag.js) - Google Analytics