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

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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: