AES加密及在Android中的使用
AES简介
高级加密标准(AES,Advanced Encryption Standard),是最常见的对称加密算法,对称加密是指加密和解密使用相同的密钥
在Android中使用AES
AES共有5种加密模式:
ECB模式(电码本模式)
CBC模式(密码分组链接模式)
CTR(计算器模式)
CFB(密码反馈模式)
OFB(输出反馈模式)
比较常用的是ECB和CBC模式,除密钥外,CBC模式可额外传入一个偏移量(iv值)进行加密,增强了加密算法强度。
Android中已内置了AES加解密支持,示例代码如下:
AES加密(以CBC为例)
/**
* AES加密,返回BASE64编码后的加密字符串
*
* @param sSrc -- 待加密内容
* @param encodingFormat -- 字符串编码方式
* @param algorithm -- 使用的算法 算法/模式/补码方式, 目前支持ECB和CBC模式
* @param sKey -- 加密密钥
* @param ivParameter -- 偏移量,CBC模式时需要
* @return Base64编码后的字符串
* @throws Exception
*/
public static String aesEncrypt(String sSrc, String encodingFormat, String algorithm, String sKey, String ivParameter) throws Exception {
Cipher cipher = Cipher.getInstance(algorithm);
byte[] raw = sKey.getBytes(encodingFormat);
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
//使用CBC模式,需要一个向量iv,可增加加密算法的强度
IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes(encodingFormat));
if (algorithm.contains("CBC")) {