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; } }
*第一次写 希望能帮助需要的人
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories