随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)

在前面介绍了一些加密解密类的使用,这里综合起来做一个简单的测试,代码如下:

MainActivity:

package com.home.testdes;

import android.os.Bundle;
import android.util.Log;
import android.app.Activity;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		DESUtil u = new DESUtil();
		String mi = u.getEnc("I love you");
		Log.i("加密后", mi);
		String ming = u.getDec(mi);
		Log.i("解密后", ming);
	}
}

加密解密工具类:

package com.home.testdes;

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

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

import android.util.Base64;

/**
 * 使用DES加密和解密工具类
 * 
 * @author Administrator
 * 
 */
public class DESUtil {

	private Key key;// 密钥的key值
	private byte[] DESkey;
	private byte[] DESIV = { 0x12, 0x34, 0x56, 0x78, (byte) 0x90, (byte) 0xAB,
			(byte) 0xCD, (byte) 0xEF };
	private AlgorithmParameterSpec iv = null;// 加密算法的参数接口

	public DESUtil() {
		try {
			this.DESkey = "abcdefghijk".getBytes("UTF-8");// 设置密钥
			DESKeySpec keySpec = new DESKeySpec(DESkey);// 设置密钥参数
			iv = new IvParameterSpec(DESIV);// 设置向量
			SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");// 获得密钥工厂
			key = keyFactory.generateSecret(keySpec);// 得到密钥对象
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 加密String 明文输入密文输出
	 * 
	 * @param inputString
	 *            待加密的明文
	 * @return 加密后的字符串
	 */
	public String getEnc(String inputString) {
		byte[] byteMi = null;
		byte[] byteMing = null;
		String outputString = "";
		try {
			byteMing = inputString.getBytes("UTF-8");
			byteMi = this.getEncCode(byteMing);
			byte[] temp = Base64.encode(byteMi, Base64.DEFAULT);
			outputString = new String(temp);
		} catch (Exception e) {
		} finally {
			byteMing = null;
			byteMi = null;
		}
		return outputString;
	}

	/**
	 * 解密String 以密文输入明文输出
	 * 
	 * @param inputString
	 *            需要解密的字符串
	 * @return 解密后的字符串
	 */
	public String getDec(String inputString) {
		byte[] byteMing = null;
		byte[] byteMi = null;
		String strMing = "";
		try {
			byteMi = Base64.decode(inputString.getBytes(), Base64.DEFAULT);
			byteMing = this.getDesCode(byteMi);
			strMing = new String(byteMing, "UTF8");
		} catch (Exception e) {
		} finally {
			byteMing = null;
			byteMi = null;
		}
		return strMing;
	}

	/**
	 * 加密以byte[]明文输入,byte[]密文输出
	 * 
	 * @param bt
	 *            待加密的字节码
	 * @return 加密后的字节码
	 */
	private byte[] getEncCode(byte[] bt) {
		byte[] byteFina = null;
		Cipher cipher;
		try {
			// 得到Cipher实例
			cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
			cipher.init(Cipher.ENCRYPT_MODE, key, iv);
			byteFina = cipher.doFinal(bt);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cipher = null;
		}
		return byteFina;
	}

	/**
	 * 解密以byte[]密文输入,以byte[]明文输出
	 * 
	 * @param bt
	 *            待解密的字节码
	 * @return 解密后的字节码
	 */
	private byte[] getDesCode(byte[] bt) {
		Cipher cipher;
		byte[] byteFina = null;
		try {
			// 得到Cipher实例
			cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
			cipher.init(Cipher.DECRYPT_MODE, key, iv);
			byteFina = cipher.doFinal(bt);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cipher = null;
		}
		return byteFina;
	}
}




 

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐