首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

DES加密及解密打包

2013-01-08 
DES加密及解密封装/* * @(#)CipherUtil.javaProject:androidkit * Date:2012-12-18 * * Copyright (c) 201

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。

热点排行