Android DES加密工具

来源:互联网 发布:java程序员成长之路 编辑:程序博客网 时间:2024/05/01 23:45
public class DesUtil {/** * DES 默认key */private static String desKey;/** * DES解密 (采用默认key) *  * @param desKey * @param dataSource * @throws IllegalBlockSizeException * @throws BadPaddingException * @throws InvalidKeyException * @throws NoSuchAlgorithmException * @throws NoSuchPaddingException * @throws InvalidKeySpecException * @throws UnsupportedEncodingException */public static String decode(String dataSource) throws Exception {if (dataSource != null) {// DES算法要求有一个可信任的随机数源byte rawKeyData[] = desKey.getBytes("UTF-8");// SecureRandom sr = new SecureRandom();// 从原始密匙数据创建一个DESKeySpec对象DESKeySpec dks = new DESKeySpec(rawKeyData);// 创建一个密匙工厂,然后用它把DESKeySpec对象转换成一个SecretKey对象SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");SecretKey key = keyFactory.generateSecret(dks);// Cipher对象实际完成解密操作Cipher cipher = Cipher.getInstance("DES");// 用密匙初始化Cipher对象cipher.init(Cipher.DECRYPT_MODE, key);// 正式执行解密操作byte decryptedData[] = cipher.doFinal(Base64.decode(dataSource, Base64.DEFAULT));return new String(decryptedData);}return null;}/** * DES解密 *  * @param desKey * @param dataSource * @throws IllegalBlockSizeException * @throws BadPaddingException * @throws InvalidKeyException * @throws NoSuchAlgorithmException * @throws NoSuchPaddingException * @throws InvalidKeySpecException * @throws UnsupportedEncodingException */public static String decode(String desKey, String dataSource) throws Exception {if (dataSource != null && desKey != null) {// DES算法要求有一个可信任的随机数源byte rawKeyData[] = desKey.getBytes("UTF-8");// SecureRandom sr = new SecureRandom();// 从原始密匙数据创建一个DESKeySpec对象DESKeySpec dks = new DESKeySpec(rawKeyData);// 创建一个密匙工厂,然后用它把DESKeySpec对象转换成一个SecretKey对象SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");SecretKey key = keyFactory.generateSecret(dks);// Cipher对象实际完成解密操作Cipher cipher = Cipher.getInstance("DES");// 用密匙初始化Cipher对象cipher.init(Cipher.DECRYPT_MODE, key);// 正式执行解密操作byte decryptedData[] = cipher.doFinal(Base64.decode(dataSource, Base64.DEFAULT));return new String(decryptedData);}return null;}/** * DES加密 (采用默认key) *  * @param desKey * @param dataSource * @throws InvalidKeyException * @throws NoSuchAlgorithmException * @throws IllegalBlockSizeException * @throws BadPaddingException * @throws NoSuchPaddingException * @throws InvalidKeySpecException * @throws UnsupportedEncodingException */public static String encode(Object dataSource) throws Exception {if (dataSource != null) {byte rawKeyData[] = desKey.getBytes("UTF-8");// DES算法要求有一个可信任的随机数源// SecureRandom sr = new SecureRandom();// 从原始密匙数据创建一个DESKeySpec对象DESKeySpec dks = new DESKeySpec(rawKeyData);// 创建一个密匙工厂,然后用它把DESKeySpec转换成一个SecretKey对象SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");SecretKey key = keyFactory.generateSecret(dks);// Cipher对象实际完成加密操作Cipher cipher = Cipher.getInstance("DES");// 用密匙初始化Cipher对象cipher.init(Cipher.ENCRYPT_MODE, key);// 现在,获取数据并加密String str = String.valueOf(dataSource);byte[] encryptedData = cipher.doFinal(str.getBytes("UTF-8"));return Base64.encodeToString(encryptedData, Base64.DEFAULT);}return null;}/** * DES加密  *  * @param desKey * @param dataSource * @throws InvalidKeyException * @throws NoSuchAlgorithmException * @throws IllegalBlockSizeException * @throws BadPaddingException * @throws NoSuchPaddingException * @throws InvalidKeySpecException * @throws UnsupportedEncodingException */public static String encode(String desKey, Object dataSource) throws Exception {if (desKey != null && dataSource != null) {byte rawKeyData[] = desKey.getBytes("UTF-8");// DES算法要求有一个可信任的随机数源// SecureRandom sr = new SecureRandom();// 从原始密匙数据创建一个DESKeySpec对象DESKeySpec dks = new DESKeySpec(rawKeyData);// 创建一个密匙工厂,然后用它把DESKeySpec转换成一个SecretKey对象SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");SecretKey key = keyFactory.generateSecret(dks);// Cipher对象实际完成加密操作Cipher cipher = Cipher.getInstance("DES");// 用密匙初始化Cipher对象cipher.init(Cipher.ENCRYPT_MODE, key);// 现在,获取数据并加密String str = String.valueOf(dataSource);byte[] encryptedData = cipher.doFinal(str.getBytes("UTF-8"));return Base64.encodeToString(encryptedData, Base64.DEFAULT);}return null;}/** * 获得DES 默认key * @return */public static String getDesKey() {return desKey;}/** * 设置DES 默认key * @param desKey */public static void setDesKey(String desKey) {DesUtil.desKey = desKey;}}


0 0
原创粉丝点击