Android(安卓)DES加密解密算法
16lz
2021-01-26
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解密,否则的话抛出异常
更多相关文章
- Android(安卓)RSA 公钥加密、解密
- 了解Context
- 播放记录的SQLite数据库实现
- SharePreference封装使用
- Android(安卓)通过Intent 传递对象
- 自定义对话框 位置 大小等
- Android-HttpsURLConnectionHelp工具类
- Android(安卓)zip文件压缩解压缩
- Andriod中绘(画)图----Canvas的使用详解