成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android中數據的加密解密

移動開發 Android
開發中我們經常會和服務器打交道:最終的目的就是和數據打交道,但是這往往出現一個問題就是,數據的安全性問題,比如說我們把數據發送給服務器,服務器返回數據給我們,這其中牽涉到很重要的安全性問題:分3步來解決這個問題。

開發中我們經常會和服務器打交道:最終的目的就是和數據打交道,但是這往往出現一個問題就是,數據的安全性問題,比如說我們把數據發送給服務器,服務器返回數據給我們,這其中牽涉到很重要的安全性問題:分3步來解決這個問題。

Android中數據的加密解密

1:首先我們新建一個類用來加密和解密如下所示:

  1.  * Created by acer-pc on 2018/6/22. 
  2.  */ 
  3.  
  4. public class EncryptUtil { 
  5.  
  6.     private static final String ALGORITHM = "AES/ECB/PKCS5Padding"
  7.  
  8.     // 加密秘鑰 
  9.     private static final String AES_KEY = "XXX(我們自己設置)"
  10.  
  11.     private static SecretKeySpec secretKeySpec; 
  12.  
  13.     /** 
  14.      * 前臺傳輸數據解密 
  15.      * 
  16.      * @param rawJson 原始JSON 
  17.      * @return 解密后的Map 
  18.      */ 
  19.     public static <T extends BaseResult> T decrypt(String rawJson, Class<T> tClass) { 
  20.  
  21.         T result=null
  22.  
  23.         try { 
  24.             Cipher cipher = Cipher.getInstance(ALGORITHM); 
  25.             cipher.init(Cipher.DECRYPT_MODE, getAesKey()); 
  26.             byte[] paramBytes = cipher.doFinal(Base64.decode(rawJson.getBytes("UTF-8"), Base64.NO_WRAP)); 
  27.             String paramJson = new String(paramBytes); 
  28.             result = GsonUtil.fromJson(paramJson, tClass); 
  29.         } catch (NoSuchPaddingException e) { 
  30.             e.printStackTrace(); 
  31.         } catch (NoSuchAlgorithmException e) { 
  32.             e.printStackTrace(); 
  33.         } catch (InvalidKeyException e) { 
  34.             e.printStackTrace(); 
  35.         } catch (BadPaddingException e) { 
  36.             e.printStackTrace(); 
  37.         } catch (IllegalBlockSizeException e) { 
  38.             e.printStackTrace(); 
  39.         } catch (UnsupportedEncodingException e) { 
  40.             e.printStackTrace(); 
  41.         } 
  42.  
  43.         return result; 
  44.     } 
  45.  
  46.     /** 
  47.      * 數據傳輸過程中需要加密設置 
  48.      * @param rawMap 
  49.      * @return 
  50.      */ 
  51.  
  52.     public static String encrypt(Map<String, String> rawMap) { 
  53.         String result = ""
  54.  
  55.         try { 
  56.             Cipher cipher = Cipher.getInstance(ALGORITHM); 
  57.             cipher.init(Cipher.ENCRYPT_MODE, getAesKey()); 
  58.  
  59.             String rawJson = GsonUtil.toJson(rawMap); 
  60.             byte[] paramBytes = cipher.doFinal(rawJson.getBytes("UTF-8")); 
  61.             result = Base64.encodeToString(paramBytes, Base64.NO_WRAP); 
  62.         } catch (NoSuchPaddingException e) { 
  63.             e.printStackTrace(); 
  64.         } catch (NoSuchAlgorithmException e) { 
  65.             e.printStackTrace(); 
  66.         } catch (InvalidKeyException e) { 
  67.             e.printStackTrace(); 
  68.         } catch (BadPaddingException e) { 
  69.             e.printStackTrace(); 
  70.         } catch (IllegalBlockSizeException e) { 
  71.             e.printStackTrace(); 
  72.         } catch (UnsupportedEncodingException e) { 
  73.             e.printStackTrace(); 
  74.         } 
  75.  
  76.         return result; 
  77.     } 
  78.  
  79.     private static SecretKeySpec getAesKey() { 
  80.         if (secretKeySpec != null) { 
  81.             return secretKeySpec; 
  82.         } 
  83.         try { 
  84.             secretKeySpec = new SecretKeySpec(AES_KEY.getBytes("UTF-8"), "AES"); 
  85.         } catch (UnsupportedEncodingException e) { 
  86.             e.printStackTrace(); 
  87.         } 
  88.  
  89.         return secretKeySpec; 
  90.     } 

2:其中的BaseResult如下(要解析的數據的根類,放數據的類要繼承這個類):

  1. public class BaseResult {  
  2.     private int result; 
  3.     private String message;  
  4.     public int getResult() { 
  5.         return result; 
  6.     } 
  7.  
  8.     public void setResult(int result) { 
  9.         this.result = result; 
  10.     } 
  11.  
  12.     public String getMessage() { 
  13.         return message; 
  14.     } 
  15.  
  16.     public void setMessage(String message) { 
  17.         this.message = message; 
  18.     } 

3:當我們在主類中(或者Fragment中)使用的時候如下:

  1. //加載數據 
  2. public void initData() { 
  3.     //這里利用線程池使得線程在線程池中運行防止程序卡死 
  4.     APIConfig.getDataIntoView(new Runnable() { 
  5.         @Override 
  6.         public void run() { 
  7.             Map<String, String> map = new HashMap<>(); 
  8.             map.put("token", RuntimeConfig.user.getToken()); 
  9.             String paramJson = EncryptUtil.encrypt(map); 
  10.             String url = "http://這里是我們的目標網址"
  11.             String rs = HttpUtil.GetDataFromNetByPost(url, 
  12.                     new ParamsBuilder().addParam("paramJson", paramJson).getParams()); 
  13.             // rs判空 
  14.             final DiaryDetailResult result = EncryptUtil.decrypt(rs, DiaryDetailResult.class); 
  15.  
  16.             UIUtils.runOnUIThread(new Runnable() { 
  17.                 @Override 
  18.                 public void run() { 
  19.                     //這里禁用 
  20.                     if (result != null && result.getResult() == APIConfig.CODE_SUCCESS) { 
  21.                         Diary diaryData = result.getData().getContent(); 
  22.                         //接下來對解析出的數據進行自己的操作 
  23.                         。。。。。。。。。。。。 
  24.  
  25.                     } else { 
  26.                       // Toast彈出加載失敗; 
  27.                     } 
  28.                 } 
  29.             }); 
  30.         } 
  31.     }); 

3:大功告成!

責任編輯:未麗燕 來源: Android開發中文站
相關推薦

2024-03-01 09:58:44

2011-08-01 14:14:36

加密技術

2023-06-26 00:30:51

2023-10-16 08:22:49

2024-07-09 10:13:15

2021-01-07 14:17:31

Springboot數據安全加密

2015-03-26 14:19:53

GPG加密解密

2020-09-24 10:50:53

加密解密語言hmac

2023-03-06 08:49:02

加密和解密SpringBoot

2024-01-01 14:19:11

2016-07-12 09:40:30

惡意程序TLS加密惡意流量

2024-04-29 07:50:52

C#AES加密

2014-01-03 09:13:39

JavaScriptthis

2021-04-15 09:02:33

Python加密解密

2016-06-21 10:40:54

云計算AWS

2021-05-08 05:56:15

加密OpenSSL密鑰

2011-04-12 14:58:23

加密解密類

2011-06-28 14:30:48

Asp.net

2018-04-23 13:10:01

2018-08-28 10:40:08

Windows 10EFS加密文件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: av网站免费在线观看 | 欧美亚洲国产成人 | 国产精品久久久久久久久久免费看 | 麻豆毛片| 一区二区三区欧美 | 欧美在线a | 久产久精国产品 | 中文字幕一区二区三区日韩精品 | 欧美成人免费 | 精品久久久999 | www国产成人| 精品久久久一区二区 | 国产三级在线观看播放 | 亚洲精品1| 91av在线免费 | 久久99精品久久久久蜜桃tv | 欧美日韩网站 | 韩国电影久久 | 在线观看成人免费视频 | www.日韩免费 | 另类视频区 | eeuss国产一区二区三区四区 | 日本黄色不卡视频 | 99国内精品久久久久久久 | 精品视频免费 | 日韩一二三区 | 国产91视频免费 | 成人欧美一区二区三区在线播放 | 男人天堂国产 | 久久久久国产精品一区二区 | 婷婷开心激情综合五月天 | 成人免费xxxxx在线视频 | 人人人干 | www国产成人免费观看视频 | 成人看片在线观看 | 欧美精品一区二区三区四区五区 | 毛片久久久 | 久久a久久 | 九九热这里| 天天操天天摸天天干 | 999热精品|