DES加密的模式
- DES加密有很多模式,模式不同可能加密的结果也不相同往往是填充方式不对、或者编码不一致、或者选择加密解密模式(ECB,CBC,CTR,OFB,CFB,NCFB,NOFB)没有对应上造成。常见的填充模式有: 'pkcs5','pkcs7','iso10126','ansix923','zero' 类型,包括DES-ECB,DES-CBC,DES-CTR,DES-OFB,DES-CFB
- Base64 android.util包下的和apach jar包下的base64 encodeString没有什么不同,android就用android.util.Base64,没必要导入java的
import org.apache.commons.codec.binary.Base64
以下下代码两种加密模式
/**
* 加密
* @param datasource byte[]
* @param password String
* @return byte[]
*/
public static byte[] encrypt(byte[] datasource, String password) {
try{
SecureRandom random = new SecureRandom();
DESKeySpec desKey = new DESKeySpec(password.getBytes());
//创建一个密匙工厂,然后用它把DESKeySpec转换成
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey securekey = keyFactory.generateSecret(desKey);
//Cipher对象实际完成加密操作
Cipher cipher = Cipher.getInstance("DES");
//用密匙初始化Cipher对象
cipher.init(Cipher.ENCRYPT_MODE, securekey, random);
//现在,获取数据并加密
//正式执行加密操作
return cipher.doFinal(datasource);
}catch(Throwable e){
e.printStackTrace();
}
return null;
} /**
* 二维码加密
* @param datasource byte[]
* @param password String
* @return byte[]
*/
public static byte[] qrencrypt(byte[] datasource, String password) {
try{
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
DESKeySpec desKeySpec = new DESKeySpec(password.getBytes());
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey securekey = keyFactory.generateSecret(desKeySpec);
IvParameterSpec desKey = new IvParameterSpec(password.getBytes());
//创建一个密匙工厂,然后用它把DESKeySpec转换成
//Cipher对象实际完成加密操作
//用密匙初始化Cipher对象
cipher.init(Cipher.ENCRYPT_MODE, securekey, desKey);
//现在,获取数据并加密
//正式执行加密操作
return cipher.doFinal(datasource);
}catch(Throwable e){
e.printStackTrace();
}
return null;
}