您的位置:首页 > 移动开发 > Android开发

android 的Base64+3DES加密

2015-12-12 18:37 465 查看

android 的Base64+3DES加密

因为项目原因要对一些敏感数据要与后台加密传输,然后上网查了一查看见好多都是ios的,然后我就根据我的需求借鉴别人的代码简单的总结了一下。

闲言少叙直接上代码

代码很简单明了有写了注释

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

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String msg = "使用3DES对数据进行加密";
System.out.println("【加密前】:" + msg);

/**
*  进行3DES加密
*
*/
byte[] secretArr = DES3Utils.encryptMode(msg.getBytes());
System.out.println("【加密后】:" + new String(secretArr));

//        加密之后转码
/**
* 进行3DES加密时候要进行Base64转码
* 转成String上传服务器
*
*/
String strBase64 = new String(Base64.encode(secretArr, Base64.DEFAULT));
System.out.println("【解密后z转码】:" + new String(strBase64));

/**
* 对上传的base64 进行解码
* 转换成byte格式
*/
byte[] qqq = Base64.decode(strBase64, Base64.DEFAULT);
System.out.println("【服务器端解码】:" + new String(strBase64));

// 解密
/**
* 对base64解码之后的数据进行3DES解密
*
*/
byte[] myMsgArr = DES3Utils.decryptMode(qqq);
System.out.println("【最后的解密】:" + new String(myMsgArr));

}

}


这是工具类

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

/**
*
*
* Created by sunzhenyong on 2015/12/12.
*
*/
public class DES3Utils {
// 定义加密算法,DESede即3DES
private static final String Algorithm = "DESede";
// 加密密钥
private static final String PASSWORD_CRYPT_KEY = "qq609632221";

/**
* 加密方法
*
* @param src 源数据的字节数组
* @return
*/
public static byte[] encryptMode(byte[] src) {
try {
// 生成密钥
SecretKey deskey = new SecretKeySpec(
build3DesKey(PASSWORD_CRYPT_KEY), Algorithm);
// 实例化Cipher
Cipher cipher = Cipher.getInstance(Algorithm);
cipher.init(Cipher.ENCRYPT_MODE, deskey);
return cipher.doFinal(src);
} catch (java.security.NoSuchAlgorithmException e1) {
e1.printStackTrace();
} catch (javax.crypto.NoSuchPaddingException e2) {
e2.printStackTrace();
} catch (java.lang.Exception e3) {
e3.printStackTrace();
}
return null;
}

/**
* 解密函数
*
* @param src 密文的字节数组
* @return
*/
public static byte[] decryptMode(byte[] src) {
try {
SecretKey deskey = new SecretKeySpec(
build3DesKey(PASSWORD_CRYPT_KEY), Algorithm);
Cipher c1 = Cipher.getInstance(Algorithm);
c1.init(Cipher.DECRYPT_MODE, deskey);
return c1.doFinal(src);
} catch (java.security.NoSuchAlgorithmException e1) {
e1.printStackTrace();
} catch (javax.crypto.NoSuchPaddingException e2) {
e2.printStackTrace();
} catch (java.lang.Exception e3) {
e3.printStackTrace();
}
return null;
}

/**
* 根据字符串生成密钥24位的字节数组
*
* @param keyStr
* @return
* @throws UnsupportedEncodingException
*/
public static byte[] build3DesKey(String keyStr)
throws UnsupportedEncodingException {
byte[] key = new byte[24];
byte[] temp = keyStr.getBytes("UTF-8");

if (key.length > temp.length) {
System.arraycopy(temp, 0, key, 0, temp.length);
} else {
System.arraycopy(temp, 0, key, 0, key.length);
}
return key;
}

}


*第一次写 希望能帮助需要的人
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  base64 android