`
貌似掉线
  • 浏览: 260468 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

DES加密及解密封装

阅读更多
/*
 * @(#)CipherUtil.java		       Project:androidkit
 * Date:2012-12-18
 *
 * Copyright (c) 2011 CFuture09, Institute of Software, 
 * Guangdong Ocean University, Zhanjiang, GuangDong, China.
 * All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.lurencun.cfuture09.commons.security;

import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;

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

/**
 * @author Geek_Soledad (66704238@51uc.com)
 */
public class CipherUtil {
	public static final String ALGORITHM_DES = "DES";

	/**
	 * 返回可逆算法DES的密钥
	 * 
	 * @param key
	 *            前8字节将被用来生成密钥。
	 * @return 生成的密钥
	 * @throws InvalidKeyException
	 * @throws NoSuchAlgorithmException
	 * @throws InvalidKeySpecException
	 */
	public static Key getDESKey(byte[] key) throws InvalidKeyException,
			NoSuchAlgorithmException, InvalidKeySpecException {
		DESKeySpec des = new DESKeySpec(key);
		SecretKeyFactory keyFactory = SecretKeyFactory
				.getInstance(ALGORITHM_DES);
		return keyFactory.generateSecret(des);
	}

	/**
	 * 根据指定的密钥及算法,将字符串进行解密。
	 * 
	 * @param data
	 *            要进行解密的数据,它是由原来的byte[]数组转化为字符串的结果。
	 * @param key
	 *            密钥。
	 * @param algorithm
	 *            算法。
	 * @return 解密后的结果。它由解密后的byte[]重新创建为String对象。如果解密失败,将返回null。
	 */
	public static String decrypt(String data, Key key, String algorithm) {
		try {
			Cipher cipher = Cipher.getInstance(algorithm);
			cipher.init(Cipher.DECRYPT_MODE, key);
			String result = new String(cipher.doFinal(StringUtil
					.hexStringToBytes(data)), "utf8");
			return result;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 根据指定的密钥及算法对指定字符串进行可逆加密。
	 * 
	 * @param data
	 *            要进行加密的字符串。
	 * @param key
	 *            密钥。
	 * @param algorithm
	 *            算法。
	 * @return 加密后的结果将由byte[]数组转换为16进制表示的数组。如果加密过程失败,将返回null。
	 */
	public static String encrypt(String data, Key key, String algorithm) {
		try {
			Cipher cipher = Cipher.getInstance(algorithm);
			cipher.init(Cipher.ENCRYPT_MODE, key);
			return StringUtil.bytesToHexString(cipher.doFinal(data
					.getBytes("utf8")));
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
}


关于其中 的StringUtil类参见http://maosidiaoxian.iteye.com/blog/1751441。
0
1
分享到:
评论

相关推荐

    Java中3DES加密解密示例(封装byte数组16进制互转)

    Java 中的 3DES 加密解密示例(封装 byte 数组和 16 进制字符串互转) 在 Java 中,3DES 加密是一种常用的加密算法,它可以将明文数据转换为密文数据,以保护数据的安全性。在本示例中,我们将展示如何使用 3DES ...

    3DES加密解密

    标题中的“3DES加密解密”指的是在信息技术领域中,使用三重数据加密标准(3DES,Triple Data Encryption Standard)进行数据加密和解密的过程。3DES是一种加强版的DES加密算法,它通过三次应用DES的加密过程来提高...

    C++ DES加密解密

    C++ DES加密解密 封装成类了 此代码是测试工具,实现字符串加密解密/文件加密解密。KEY可使用2个 支持中文。 VS2010运行代码

    C++ 代码实现DES加密解密源代码类

    在C++中实现DES加密解密,可以创建一个类来封装相关的操作,这样有利于代码的复用和维护。 描述中提到的"单倍双倍加密算法的实现",可能是指使用DES算法进行一次或两次加密的过程。单次DES加密使用同一个密钥对数据...

    vue DES加密解密工具类 des.js

    vue DES加密解密工具类 des.js,与博文中的匹配,为封装好的完整工具类

    des 加密解密,vc c++封装

    这个项目为理解和使用DES加密解密提供了一个便捷的入口,尤其是对于C++开发者来说,可以直接集成到自己的项目中,简化了加密解密的实现步骤。需要注意的是,虽然DES在历史上发挥了重要作用,但由于其56位的密钥长度...

    若依前后台加密、解密封装

    微信小程序和若依后台框架通信,前后台加密、解密封装

    des加密解密程序(vc)

    在这个"VC下DES加密解密程序"中,我们将会探讨如何在Visual C++环境下实现DES算法。 首先,DES加密算法基于64位的数据块进行操作,但实际有效的密钥长度只有56位,因为有8位用于奇偶校验和设计上的特殊用途。DES...

    用delphi写的一个des的加密解密小程序,java写的des的一个类

    在Delphi中实现DES加密解密,可能涉及到TDes或THashDES等加密组件的使用,这些组件通常会封装DES的加密和解密过程,为开发者提供简单易用的接口。 Java是另一种流行的编程语言,它具有跨平台的特性。在Java中实现...

    DES.rar_DES加密_Des加密解密_des加密解密算法

    DESLIB是一个C++实现的DES加密解密库,包含在提供的压缩包文件`DES.cpp`中。这个库允许开发者在他们的程序中集成DES加密和解密功能。下面将详细介绍DES加密解密算法及其在`DES.cpp`中的实现原理。 **DES算法概述:*...

    Des.JAVA.rar_DES.java_DES加密_java DES 128bit_java des_加密解密

    总的来说,这个压缩包提供了一套完整的Java实现的DES加密解密工具,包括核心算法、子密钥生成、文件加密等功能,对于学习DES算法和在Java项目中使用DES加密的开发者来说,是一个非常实用的资源。使用者可以通过阅读...

    des加密解密库 c++

    本资源提供了一个C++实现的DES加密解密库,特别适用于64位数据和中英文字符的加密解密操作。这个库设计为易于集成到项目中,只需将其文件添加到您的工程即可开始使用。 DES(数据加密标准)是1970年代由IBM开发的一...

    java的加密解密封装

    对于这些加密解密方法的封装,开发者通常会创建一个单独的工具类或库,包含静态方法,这些方法接受明文或密文,以及必要的密钥或参数,然后返回加密或解密后的结果。封装的好处是简化了代码的使用,提高了代码的...

    功能强大的DES加密及解密

    总的来说,这个实验旨在让学生理解并实现DES加密解密的过程,同时熟悉MFC库的应用,提高他们在实际项目中的编程能力。通过这个作业,学生不仅学习了密码学的基本原理,还锻炼了使用C++和MFC开发Windows应用的能力。

    DES加密解密C/C++接口

    在C/C++中实现DES加密解密接口,你需要理解以下核心概念: 1. 密钥扩展:DES的56位密钥需要通过一系列的Permutation和Combining操作扩展成64位,去除每轮使用的8位奇偶校验位,实际用于加密的密钥是56位。 2. ...

    javascript DES加密解密算法

    2. 使用库:由于JavaScript原生并不支持DES算法,开发者通常会借助第三方库,如crypto-js,来实现DES加密解密功能。这些库已经封装好了DES算法的复杂逻辑,使得开发者可以方便地调用。 3. 加密和解密函数:通过调用...

    c++和c#同时实现DES加密解密

    在本文中,我们将深入探讨如何在C++和C#这两种不同的编程语言中实现DES加密解密。 首先,让我们来看看C++中的实现。在C++中,我们可以使用如`openssl`库来实现DES功能。安装库后,我们需要包含必要的头文件,如`#...

    CDES.rar_3des_Des加密解密_cdes

    在这个压缩包"CDES.rar_3des_Des加密解密_cdes"中,包含了一些关于DES(Data Encryption Standard)和3DES(Triple DES)加密解密的实现代码,这对于理解这两种经典加密算法以及如何在C++中应用它们是非常有价值的。...

    Des.rar_hallc91_java实现des加密和解密

    在Java中实现DES加密和解密是一项常见的任务,通常涉及到`java.security`和`javax.crypto`这两个包中的类和接口。以下是对这个主题的详细解释: 1. **DES算法原理**:DES是一种分组密码,它将明文数据分成64位的...

Global site tag (gtag.js) - Google Analytics