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

DES加解密之三

    博客分类:
  • JAVA
阅读更多
目前客户端使用的。

import java.security.Key;
import java.security.MessageDigest;
import java.security.spec.AlgorithmParameterSpec;

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

public class EncryptUtil {
	public final static String DES = "DES";
	public final static String MD5 = "MD5";
	static AlgorithmParameterSpec iv = null;// 加密算法的参数接口,IvParameterSpec是它的一个实现
	private static Key key = null;

	public static String encode(String sKey) throws Exception {
		String sKeyFormat = "ICITIC_PWD";
		byte[] inputByteArray = sKey.getBytes();
		byte[] desKey = getMD5ofStr(sKeyFormat).substring(0, 8).getBytes();
		byte[] desIV = getMD5ofStr(sKeyFormat).substring(0, 8).getBytes();
		CryptoTools(desKey, desIV);
		Cipher enCipher = Cipher.getInstance("DES/CBC/PKCS5Padding");// 得到加密对象Cipher
		enCipher.init(Cipher.ENCRYPT_MODE, key, iv);// 设置工作模式为加密模式,给出密钥和向量
		byte[] pasByte = enCipher.doFinal(inputByteArray);
		StringBuffer sb = new StringBuffer();
		sb.append(bytes2HexString(pasByte));
		return sb.toString();
	}

	// 设置加密工具
	private static void CryptoTools(byte[] DESkey, byte[] DESIV)
			throws Exception {
		DESKeySpec keySpec = new DESKeySpec(DESkey);// 设置密钥参数
		iv = new IvParameterSpec(DESIV);// 设置向量
		SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);// 获得密钥工厂
		key = keyFactory.generateSecret(keySpec);// 得到密钥对象
	}

	// MD5加密
	private static String getMD5ofStr(String sKeyFormat) {
		try {
			byte[] str = sKeyFormat.getBytes();
			MessageDigest md = MessageDigest.getInstance(MD5);
			md.update(str);
			byte[] b = md.digest();
			return bytes2HexString(b);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public static void main(String[] args) {
		try {
			System.out.println(encode("888888"));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static String bytes2HexString(byte[] bytes) {
		String hs = null;
		if (bytes != null) {
			final int size = bytes.length;
			if (size > 0) {
				StringBuilder sb = new StringBuilder();
				for (int i = 0; i < size; i++) {
					String tmp = (java.lang.Integer
							.toHexString(bytes[i] & 0XFF));
					if (tmp.length() == 1) {
						sb.append("0" + tmp);
					} else {
						sb.append(tmp);
					}
				}
				hs = sb.toString().toUpperCase();
			}
		}
		return hs;
	}
}



结果:
BB8DF9AB68109156
分享到:
评论
1 楼 ycq__110 2012-02-08  
THS。非常6+1

相关推荐

    3DES加密解密工具

    在3DES中,数据首先用一个密钥进行DES加密,然后用第二个密钥进行DES解密,最后再用第三个密钥进行DES加密。这种三次应用DES的过程显著增强了加密的强度,使得密钥长度达到了168位,即使在现代计算能力下也极难破解...

    C语言实现DES加密解密算法

    3. 加密和解密操作是 DES 加密解密算法的核心,使用子密钥和加密解密算法来实现。 4. 基本操作是 DES 加密解密算法的基础,包括循环左移、IP 置换、扩展置换、选择函数 S 和异或操作。 DES 加密解密算法的 C 语言...

    DES/3DES加密解密工具

    对数据进行单DES或者3DES加密或者解密,如果密码长度为8字节则为DES加密或者解密

    3DES加密解密工具类

    3DES加密解密的全工具类,快速帮助新人进行3Des加密解密

    DES加密解密(c++实现)

    DES加密解密(c++实现)

    C++ 实现 3DES加解密Base64加解密

    本篇文章将详细探讨在C++中实现3DES和Base64加解密的技术要点。 3DES(Triple Data Encryption Algorithm)是一种对称加密算法,它是DES(Data Encryption Standard)的加强版。DES使用56位的密钥,3DES通过三次...

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

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

    3DES加密解密

    描述中提到的"加出来和你文档上的不一样我负责"可能是指提供的代码实现与文档中描述的3DES加密解密方法可能存在差异,但开发者对此负责,意味着他们对代码的正确性和可靠性有信心。"DES3encrypt"和"DES3decrypt"是...

    DES加解密(JS端加解密)

    在JavaScript环境中,DES加解密可以用于保护敏感数据,如用户密码、API密钥等,确保在网络传输中数据的安全性。 在JavaScript中实现DES加解密,通常需要借助库,如`crypto-js`。这个库提供了多种加密算法,包括DES...

    des加密解密工具 .exe文件

    des加密解密工具

    des加密解密_Des加密解密_DES加密_

    4. **加解密过程**:DES的加密和解密过程非常相似,只是在某些步骤中使用了相反的操作。解密时,只需将加密过程中的子密钥顺序反转,并应用相反的非线性函数。 在给定的“des加密例程”中,可能包含了一个调用动态...

    MFC实现DES加密解密实现

    在这个项目中,我们将探讨如何使用MFC在VC++环境中实现DES加密和解密。 首先,DES是一种块加密算法,它将明文数据分为64位的块进行处理。但是,由于其中7位是奇偶校验位,实际有效密钥长度为56位。DES通过一系列...

    DES加密解密工具 DES加密解密工具

    DES加密解密工具DES加密解密工具DES加密解密工具DES加密解密工具DES加密解密工具DES加密解密工具DES加密解密工具DES加密解密工具DES加密解密工具

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

    下面我们将详细讨论C#实现DES加解密的相关知识点。 1. **基本概念**: - **对称加密**:加密和解密使用同一密钥。 - **DES算法**:基于Feistel结构,通过多次迭代实现数据的加密和解密。 - **密钥长度**:DES的...

    DES加密 解密 方法 MFC

    支持3DES加密 解密 类中利用函数重载的方式 实现两种加密方式 加密后为16进制字符串 使用方法: 实例化一个对象 然后就可以随便用了。 如 DES加密 解密 CString sd,sd2; yxyDES2 des; sd=des.DESr("wan123456",...

    3des加密解密

    标题 "3DES加密解密" 涉及到的是数据安全领域中的一种...在Java开发中,可以通过Bouncy Castle这样的加密库实现3DES的加解密操作。提供的文件可能包含3DES算法的Java实现代码,可以进一步研究学习其工作原理和应用。

    des加密解密工具

    为了增强安全性,出现了3DES(Triple DES),它通过应用DES三次,使用两个或三个不同的密钥,极大地提升了加密强度。 在使用"DES加密解密工具"时,用户应遵循一些最佳实践,例如使用随机生成且足够复杂的密钥,不...

    java和javascript之间的DES加密解密

    3. **JavaScript实现DES加密解密**: JavaScript中没有内置的DES库,通常需要依赖第三方库,如`crypto-js`。这个库提供了DES加密解密的功能,使用方式类似于Java,先生成密钥,然后调用相应的加密或解密函数。 4. ...

    用 MFC 实现 DES 加密解密算法

    然而,由于其密钥长度相对较短,现代计算机的强大计算能力已使得DES的加密强度相对较低,通常会采用3DES(Triple DES)或更先进的加密算法如AES来增强安全性。 MFC是微软提供的一套C++类库,用于简化Windows应用...

    DES加密解密实验报告

    3. **S盒置换**:S盒(Substitution Box)是DES的核心部分,共有8个不同的S盒,每个能将6位输入转化为4位输出。输入的6位分为两部分,前2位决定行,后4位决定列,然后查找S盒中的数值,将其转换为4位输出。 4. **P...

Global site tag (gtag.js) - Google Analytics