当前位置: 移动技术网 > IT编程>开发语言>Java > java中使用DES加密解密实例

java中使用DES加密解密实例

2019年07月22日  | 移动技术网IT编程  | 我要评论

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

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网