/*

* DES3.java

* Copyright (c) 2015

* All rights reserved.

* ---------------------------

* 2015年3月30日 Created

*/

package com.mango.p2p.utils;

import java.security.Key;

import javax.crypto.Cipher;

import javax.crypto.SecretKeyFactory;

import javax.crypto.spec.DESedeKeySpec;

import javax.crypto.spec.IvParameterSpec;

/**

*

* DES3加解密

*

* @author chaizhilei

* @version 1.0 2015年3月30日

*

*/

public class DES3 {

// 密钥

private final static String secretKey = "jinrong-online.com-app-c";

// 向量

private final static String iv = "01234567";

// 加解密统一使用的编码方式

private final static String encoding = "utf-8";

/**

* 3DES加密

*

* @param plainText

* 普通文本

* @return

* @throws Exception

*/

public static String encode(String plainText) throws Exception {

Key deskey = null;

DESedeKeySpec spec = new DESedeKeySpec(secretKey.getBytes());

SecretKeyFactory keyfactory = SecretKeyFactory.getInstance("desede");

deskey = keyfactory.generateSecret(spec);

Cipher cipher = Cipher.getInstance("desede/CBC/PKCS5Padding");

IvParameterSpec ips = new IvParameterSpec(iv.getBytes());

cipher.init(Cipher.ENCRYPT_MODE, deskey, ips);

byte[] encryptData = cipher.doFinal(plainText.getBytes(encoding));

return Base64.encodeToString(encryptData, Base64.DEFAULT);

}

/**

* 3DES解密

*

* @param encryptText

* 加密文本

* @return

* @throws Exception

*/

public static String decode(String encryptText) throws Exception {

Key deskey = null;

DESedeKeySpec spec = new DESedeKeySpec(secretKey.getBytes());

SecretKeyFactory keyfactory = SecretKeyFactory.getInstance("desede");

deskey = keyfactory.generateSecret(spec);

Cipher cipher = Cipher.getInstance("desede/CBC/PKCS5Padding");

IvParameterSpec ips = new IvParameterSpec(iv.getBytes());

cipher.init(Cipher.DECRYPT_MODE, deskey, ips);

byte[] decryptData = cipher.doFinal(Base64.decode(encryptText, Base64.DEFAULT));

return new String(decryptData, encoding);

}

public static void main(String[] args) {

try {

String jiami = encode("ABC");

System.out.println("加密后的结果" + jiami);

String jiemi = decode(jiami);

System.out.println("解密结果" + jiemi);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

注意:

一定要确保服务器端的密文和客户端的密文是一样的

更多相关文章

  1. android利用数字证书对程序签名
  2. Android实现点击按钮 文本框值加1
  3. Android(安卓)EditView属性解析
  4. ImageSpan的使用
  5. Android自动化测试MonkeyRunner
  6. Android(安卓)setTextColor 不生效
  7. react-native android 打包
  8. android vector
  9. Android消息机制——时钟显示和异步处理工具类(AsyncTask)

随机推荐

  1. 让 Android(安卓)可以识别BMP图片文件,且
  2. 第一行代码笔记1
  3. Android(安卓)5.1.1 源码目录结构
  4. Android(安卓)碎屏效果 (Crack Screen,击
  5. android socket通信
  6. {转}实现谷歌Android摄像头拍照 2010-06-
  7. Android使用XML全攻略(1)
  8. Android(安卓)二维码开发功能实现(五)---
  9. Android(安卓)系统基础
  10. Android关于布局、设计的常识【整理】