在程序开发中,为了保证数据的安全性,我们常常使用加密技术。Android自带有AES加密算法,下面我们就讲讲如何使用。
目前主流的加密方式有:(对称加密)AES、DES (非对称加密)RSA、DSA
调用AES/DES加密算法包最精要的就是下面两句话:
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key, zeroIv);
CBC是工作模式,DES一共有电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种模式;
PKCS5Padding是填充模式,还有其它的填充模式;
cipher.init()一共有三个参数:Cipher.ENCRYPT_MODE, key, zeroIv,zeroIv就是初始化向量。
工作模式、填充模式、初始化向量这三种因素一个都不能少。否则,如果你不指定的话,那么就要程序就要调用默认实现。
1.新建Android工程
2.编写加密类
package com.sl.androidaesdemo;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
public class AESUtils {
public static final String TAG = "AESUtils";
public static String encrypt(String key, String clearText)
{
byte[] result = null;
try
{
byte[] rawkey = getRawKey(key.getBytes());
result = encrypt(rawkey, clearText.getBytes());
}
catch (Exception e) {
e.printStackTrace();
}
String content = toHex(result);//加密后的内容
return content;
}
public static String decrypt(String key, String encrypted)
{
try {
byte[] rawKey = getRawKey(key.getBytes());
byte[] enc = toByte(encrypted);