import java.security.Key;import java.security.spec.AlgorithmParameterSpec;import javax.crypto.Cipher;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESKeySpec;import javax.crypto.spec.IvParameterSpec;import android.util.Base64;public class DesUtils { public static final String ALGORITHM_DES = "DES/CBC/PKCS5Padding"; /**  * DES算法,加密  * @param data 待加密字符串  * @param key 加密私钥,长度不能够小于8位  * @return 加密后的字节数组,一般结合Base64编码使用  * @throws CryptException 异常  */ public static String encode(String key, String data) throws Exception {  return encode(key, data.getBytes()); } /**  * DES算法,加密  * @param data  待加密字符串  * @param key  加密私钥,长度不能够小于8位  * @return 加密后的字节数组,一般结合Base64编码使用  * @throws CryptException  *             异常  */ private static String encode(String key, byte[] data) throws Exception {  try {   DESKeySpec dks = new DESKeySpec(key.getBytes());   SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");   // key的长度不能够小于8位字节   Key secretKey = keyFactory.generateSecret(dks);   Cipher cipher = Cipher.getInstance(ALGORITHM_DES);   IvParameterSpec iv = new IvParameterSpec("12345678".getBytes());   AlgorithmParameterSpec paramSpec = iv;   cipher.init(Cipher.ENCRYPT_MODE, secretKey, paramSpec);   byte[] bytes = cipher.doFinal(data);   return Base64.encodeToString(bytes, 0);  } catch (Exception e) {   throw new Exception(e);  } } /**  * DES算法,解密  * @param data  待解密字符串  * @param key 解密私钥,长度不能够小于8位  * @return 解密后的字节数组  * @throws Exception  异常  */ private static byte[] decode(String key, byte[] data) throws Exception {  try {   DESKeySpec dks = new DESKeySpec(key.getBytes());   SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");   // key的长度不能够小于8位字节   Key secretKey = keyFactory.generateSecret(dks);   Cipher cipher = Cipher.getInstance(ALGORITHM_DES);   IvParameterSpec iv = new IvParameterSpec("12345678".getBytes());   AlgorithmParameterSpec paramSpec = iv;   cipher.init(Cipher.DECRYPT_MODE, secretKey, paramSpec);   return cipher.doFinal(data);  } catch (Exception e) {   throw new Exception(e);  } }  /**  * 解密.  * @param key  * @param data  * @return  * @throws Exception  */ public static String decode(String key, String data) {  byte[] datas;  String value = null;  try {   if (System.getProperty("os.name") != null     && (System.getProperty("os.name").equalsIgnoreCase("sunos") || System       .getProperty("os.name").equalsIgnoreCase("linux"))) {    datas = decode(key, Base64.decode(data, 0));   } else {    datas = decode(key, Base64.decode(data, 0));   }   value = new String(datas);  } catch (Exception e) {   value = "";  }  return value; }}

更多相关文章

  1. android 文件名长度限制
  2. Android AutoCompleteTextView控件实现类似百度搜索提示,限制输入
  3. Android定义字符串数组资源并在程序中使用
  4. Android控件TextView中ellipsize属性(设置当文字长度超过textview
  5. 限制EditText输入类型与长度
  6. 2019AndroidBAT.字节跳动74道高级面试第二篇
  7. android 字节数据的转换与处理
  8. 去除listBView的抖动,判断textView中文本长度是不是超过预定值
  9. Android - TextView限制文本长度,英文占1位,中文占2位

随机推荐

  1. Android C编程技巧
  2. 浅入浅出Android(000):Hello Android
  3. 去掉Android USB授权框
  4. Adroid 使用AIDL和远程服务实现进程通信
  5. Android蓝牙通信功能开发
  6. Android在一个应用程序中启动另一个应用
  7. Android错误之--Error retrieving parent
  8. android中读XML文件
  9. 修改DatePickerDialog的样式
  10. android audioManager获取音量