android AES加密
2016-05-26 15:23
387 查看
public class MainActivity3 extends Activity implements OnClickListener { /** *aes算法加密 * 注意: 1.密码的长度是16位 */ private static final String AES_FLAG="AES/ECB/PKCS5Padding";//AES加密 private static final int ENCRYPT_MODE = Cipher.ENCRYPT_MODE;// 加密模式 private static final int DECRYPT_MODE = Cipher.DECRYPT_MODE;// 解密模式 private TextView tv; private byte[] datas;// 加密后的字节数组 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv); findViewById(R.id.button1).setOnClickListener(this); findViewById(R.id.button2).setOnClickListener(this); } /** * 采用AES算法进行加密解密 * @param mode 加密 解密模式 ENCRYPT_MODE DECRYPT_MODE * @param password 密码 要求16byte * @param content 加密的明文 * @return 返回加密后的密文数据 */ public static byte[] aesEncypt(int mode,String password,byte[] content){ byte[] bytes=null; try { if(password==null || content==null || password.length()!=16){ return null; } ////1.创建生成加密/解密处理引擎对象 Cipher cipher=Cipher.getInstance(AES_FLAG); //2.生成aes算法加密对象 SecretKeySpec secretKeySpec=new SecretKeySpec(password.getBytes(), "AES"); //3.初始化加密引擎 cipher.init(mode, secretKeySpec); //4.对明文进行加密变成密文 bytes=cipher.doFinal(content); } catch (InvalidKeyException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (NoSuchPaddingException e) { e.printStackTrace(); } catch (IllegalBlockSizeException e) { e.printStackTrace(); } catch (BadPaddingException e) { e.printStackTrace(); } return bytes; } @Override public void onClick(View v) { switch (v.getId()) { case R.id.button1: datas = aesEncypt(ENCRYPT_MODE, "1234567812345678", "张瑞逸".getBytes()); // 通过base64编码 datas = Base64.encode(datas, Base64.DEFAULT); tv.setText(new String(datas)); break; case R.id.button2: //先通过base64对密文进行解码 byte[] bytes=Base64.decode(datas, Base64.DEFAULT); bytes=aesEncypt(DECRYPT_MODE, "1234567812345678", bytes); if(bytes!=null && bytes.length>0){ tv.setText(new String(bytes)); }else{ tv.setText("解码失败!"); } break; default: break; } } }
相关文章推荐
- 关于android4.3 Intel X86 Atom System Image的下载
- android ndk开发之代码提示
- android 3des 加密
- android MVP
- android studio发布公共类库到服务器maven仓库
- 关于Activity生命周期的一些笔记
- ViewPager与RadioGroup制作导航栏
- android双缓冲应用
- Android之SurfaceView
- android DES加密
- android studio Error:Protocol family unavailable
- picasso-强大的Android图片下载缓存库
- 动画_ _ Android应用开发之所有动画使用详解
- Android Jni使用案例
- cordova 和android studio的第一个项目(常见问题注意!)
- android 倒计时 CountDownTimer
- Android代码分析工具-Method profiling
- 安卓so动态库加载代理实现,可以实现C层的类反射效果
- Toolbar 使用
- android低版本工程(如1.5)放到高版本环境中(如2.2)如何转换