Android DES加密解密算法

来源:互联网 发布:python argsort函数 编辑:程序博客网 时间:2024/05/23 00:02
package cn.howie.util;import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESKeySpec;public class DESUtil {private static byte[] key = "你的key".getBytes();//解密方式如下://new String(DESUtil.decrypt(Base64.decode("pKkeY+XC8zPKjzPloikX2H8HpfPcztNE", 0)))/** * 加密函数 * @param data 加密数据 * @param key  密钥 * @return 返回加密后的数据 */public static byte[] encrypt(byte[] data) {try {// DES算法要求有一个可信任的随机数源SecureRandom sr = new SecureRandom();// 从原始密钥数据创建DESKeySpec对象DESKeySpec dks = new DESKeySpec(key);// 创建一个密匙工厂,然后用它把DESKeySpec转换成// 一个SecretKey对象SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");SecretKey secretKey = keyFactory.generateSecret(dks);// using DES in ECB modeCipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");// 用密匙初始化Cipher对象cipher.init(Cipher.ENCRYPT_MODE, secretKey, sr);// 执行加密操作byte encryptedData[] = cipher.doFinal(data);return encryptedData;} catch (Exception e) {e.printStackTrace();}return null;}/** * 解密函数 * @param data 解密数据 * @param key 密钥 * @return 返回解密后的数据 */public static String decrypt(byte[] data) {try {// DES算法要求有一个可信任的随机数源SecureRandom sr = new SecureRandom();// byte rawKeyData[] = /* 用某种方法获取原始密匙数据 */;// 从原始密匙数据创建一个DESKeySpec对象DESKeySpec dks = new DESKeySpec(key);// 创建一个密匙工厂,然后用它把DESKeySpec对象转换成// 一个SecretKey对象SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");SecretKey secretKey = keyFactory.generateSecret(dks);// using DES in ECB modeCipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");// 用密匙初始化Cipher对象cipher.init(Cipher.DECRYPT_MODE, secretKey, sr);// 正式执行解密操作byte decryptedData[] = cipher.doFinal(data);return new String(decryptedData);} catch (Exception e) {e.printStackTrace();}return null;}}

加密后要先用base64再加密后再传输,接到加密后的字符后先base64解密再用des解密,否则的话抛出异常


原创粉丝点击