博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中使用DES加密解密
阅读量:4258 次
发布时间:2019-05-26

本文共 3245 字,大约阅读时间需要 10 分钟。

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

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

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;	}}

 

转载地址:http://qfvei.baihongyu.com/

你可能感兴趣的文章
[Linux] c语言变量的存储位置-笔记
查看>>
[Linux] 头文件实质-笔记
查看>>
统一修改iOS中xib颜色值
查看>>
数据湖与数据仓库的新未来:阿里提出湖仓一体架构
查看>>
基于 Flink+Iceberg 构建企业级实时数据湖 | 附 PPT 下载
查看>>
Flink 源码:Checkpoint 元数据详解
查看>>
基于Flink+ClickHouse打造轻量级点击流实时数仓
查看>>
Flink sink schema 字段设计小技巧
查看>>
Flink 使用 union 代替 join 和 cogroup
查看>>
踩坑记 | Flink 天级别窗口中存在的时区问题
查看>>
用了 History Server,妈妈再也不用担心我的 Flink 作业半夜挂了
查看>>
强烈推荐三本 Spark 新书籍
查看>>
ClickHouse 知识讲解
查看>>
ClickHouse 如何玩转时序数据
查看>>
Flink 在腾讯视频的应用实践
查看>>
Flink SQL 1.11 on Zeppelin 平台化实践
查看>>
通过项目逐步深入了解Mybatis<三>
查看>>
奇怪的Java题:为什么128 == 128返回为False,而127 == 127会返回为True?
查看>>
通过项目逐步深入了解Spring MVC(一)
查看>>
java读取文件
查看>>