老板说要把请求的url信息加密一下,轻轻的一句话,就使得我写下了这篇文章

这里要说明一下,正常的逻辑应该是在app端加密,在服务器端解密,但是这里只贴了app端的加解密,服务器端的加解密就期待我下一篇文章了。。

网上有很多加密的方式和实现代码,但是对于新手的我来说,却研究了不少时间,特别是不熟悉android的调试,出现了一些问题就常常吓出一身冷汗,闲话不说了,上代码

import javax.crypto.Cipher;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESKeySpec;import javax.crypto.spec.IvParameterSpec;  public class DESEncrypt { public static String keyStr="CTYSoft0";  private String ivStr="CTYSoft0";   /// <summary>     /// 加密     /// </summary>     /// <param name="EncStr">被加密的字符串</param>     /// <returns>加密后的字符串</returns>     public static String EncyptStr(String EncStr) throws Exception     {         DESEncrypt m = new DESEncrypt();          return m.Encrypt(EncStr,keyStr);          }                     /// <summary>     /// 解密     /// </summary>     /// <param name="EncStr">被加密的字符串</param>     /// <returns>加密后的字符串</returns>     public static String Decrypt(String DncStr) throws Exception     {         DESEncrypt m = new DESEncrypt();          return m.Decrypt(DncStr,keyStr);          }          //java的DES加密     public static String Encrypt(String message, String key) throws Exception      {                      DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8"));   //根据设定的key生成钥匙           SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");  //创建一个密匙工厂,然后用它把key转换成密钥DESKeySpec          SecretKey secretKey = keyFactory.generateSecret(desKeySpec);                 // SecureRandom random = new SecureRandom();         IvParameterSpec iv = new IvParameterSpec(key.getBytes("UTF-8"));                      Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");           cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);          //  cipher.init(Cipher.ENCRYPT_MODE, secretKey, random);            return toHexString(cipher.doFinal(message.getBytes("UTF-8")));       }              public static String toHexString(byte b[]) {           StringBuffer hexString = new StringBuffer();           for (int i = 0; i < b.length; i++) {               String plainText = Integer.toHexString(0xff & b[i]);               if (plainText.length() < 2)                   plainText = "0" + plainText;                  hexString.append(plainText);              }            return hexString.toString();             }                  public static String Decrypt(String message, String key) throws Exception {                 byte[] bytesrc = convertHexString(message);           Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");           DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8"));           SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");           SecretKey secretKey = keyFactory.generateSecret(desKeySpec);           IvParameterSpec iv = new IvParameterSpec(key.getBytes("UTF-8"));              cipher.init(Cipher.DECRYPT_MODE, secretKey, iv);            byte[] retByte = cipher.doFinal(bytesrc);           return new String(retByte);       }           public static byte[] convertHexString(String ss) {           byte digest[] = new byte[ss.length() / 2];           for (int i = 0; i < digest.length; i++) {               String byteString = ss.substring(2 * i, 2 * i + 2);               int byteValue = Integer.parseInt(byteString, 16);               digest[i] = (byte) byteValue;           }              return digest;       } 
测试:

 //加密字符串                DESEncrypt DESEncryptObj=new DESEncrypt();                String afterStrKey=  DESEncryptObj.EncyptStr(KeyStr);                             String DecryptStr=DESEncryptObj.Decrypt(afterStrKey);    //解密可用



更多相关文章

  1. Android、iOS和Java通用的AES128加密解密示例代码
  2. Android应用程序打包时,出现错误:"XXX" is not translated in "af
  3. Android项目管理之配置管理
  4. Android字符串绘制示例
  5. 修改一个值,让ScrollView、ListView充满弹性
  6. 2015.4.28 北京未名空间信息技术有限公司
  7. 自定义Android(安卓)TextView超链接处理
  8. Android(安卓)重学系列 资源管理系统 资源的初始化加载(上)
  9. Android中使用MD5对密码进行加密

随机推荐

  1. Android创建快捷方式(shortcut)
  2. Android(安卓)判断当前网络 wifi ctwap(c
  3. Android用Apache HttpClient 实现POST和G
  4. 编译 Boost for android的库方法
  5. android 广播机制
  6. android获取屏幕分辨率
  7. Android(安卓)动态设置全屏,退出全屏
  8. Android(安卓)Studio之——问题集合及解
  9. 〖Android〗CyanogenMod同步错误的解决
  10. Jenkins持续集成安卓 Android