精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android外部文件加解密及應用實踐

移動開發(fā) Android
有這樣的應用場景,當我們把一些重要文件放到asset文件夾中時,把.apk解壓是可以直接拿到這個文件的,一些涉及到重要信息的文件我們并不想被反編譯拿去,這個時候需要先對文件進行加密,然后放到Android中的資源目錄下,用的時候再解密出來。

有這樣的應用場景,當我們把一些重要文件放到asset文件夾中時,把.apk解壓是可以直接拿到這個文件的,一些涉及到重要信息的文件我們并不想被反編譯拿去,這個時候需要先對文件進行加密,然后放到Android中的資源目錄下,用的時候再解密出來。

現(xiàn)代密碼學中,加密系統(tǒng)的安全性是基于密鑰的,而不是基于算法,現(xiàn)在介紹一整套加解密及應用流程,這套加密流程從實用性和安全性上來講,我覺得還是很靠譜的,也是市面上比較常用的做法,核心邏輯其實比較簡單,畢竟最難的加解密算法實現(xiàn)部分是現(xiàn)成的了,我司部分也用了這套流程,當然會比我講的這個要復雜一些。

1、簡介

主要涉及到一下幾個算法的應用,RSA、AES,以及Base64編碼,基本思想是用[AES算法+AES密鑰]來加密文件,為了保證密鑰的安全性,會通過[RSA算法+RSA私鑰]對AES密鑰進行加密。

對這幾種算法不熟悉可以看看我司大佬的‘常用的加密方式和應用場景’這篇文章,知道大概的原理和使用方法就行,因為算法在java中都是現(xiàn)成的,直接拿來用就是了。 

Android外部文件加解密及應用實踐

Android加解密流程圖.png

 

把流程整理了一下,就是以上的流程圖,分成三塊:

  • 第1塊是把加密過程給封裝成一個小工具,用加密工具來對文件進行加密;
  • 第2塊是把解密過程封裝成解密的小工具,用解密工具來解密我們的文件好進行相關修改;
  • 第3塊使我們的目的,就是把加密文件和加解密的AES算法密鑰放到Android資源文件中進行具體的使用。

有一點需要補充的,就是RSA算法的公私鑰,從第3塊中可以發(fā)現(xiàn),并沒有把RSA的公鑰和私鑰放到資源文件中,其實大家想想就知道了,如果被加密文件、加解密的AES密鑰、用于對AES密鑰進行加密的RSA密鑰三者都放入文件夾中,那就沒有啥安全性可言了(注:加解密的算法可以改造成自己公司獨有的,我司就是這么做的),所以為了保證安全性,我們的RSA公私鑰是通過應用的簽名(.keystore簽名文件)中代碼動態(tài)獲取。感興趣的可以看這篇文章:[從Java Keystore文件中提取私鑰、證書]。

2、第1塊:加密工具進行加密

工具的java界面開發(fā)是通過java的swing包來實現(xiàn)的,對swing感興趣的可以參考這篇Java Swing 圖形界面開發(fā)簡介,講得非常詳細。

一開始的時候是沒有AES秘鑰的,需要我們生成一個安全的秘鑰,所以生成一個隨機AES秘鑰,然后保存,加密工具的操作頁界面: 

Android外部文件加解密及應用實踐

加密

 

2.1、生成隨機秘鑰

生成隨機秘鑰主要分為幾步:

  • 通過UUID.randomUUID()生成隨機數(shù)作為seed種子;
  • seed種子提供給KeyGenerator生成AES秘鑰,只要seed種子生成的AES秘鑰就是一致的;
  • 通過應用簽名獲取RSA算法需要的公鑰私鑰;
  • RSA通過私鑰來加密AES秘鑰;

因為生成的秘鑰是byte[],所以通過Base64編碼展示出來給到界面上。 

  1. /**  
  2. * 生成隨機密鑰  
  3. */  
  4. private void randomKey() {  
  5. try {  
  6. //生成隨機數(shù)作為seed種子  
  7. String uuid = UUID.randomUUID().toString();  
  8. byte[] seed = uuid.getBytes("UTF-8");  
  9. //生成AES秘鑰  
  10. byte[] rawkey = AES.getRawKey(seed);  
  11. //獲取應用簽名的密鑰對  
  12. KeyPair pair = SignKey.getSignKeyPair();  
  13. //通過RSA私鑰來加密AES秘鑰  
  14. byte[] key = RSA.encrypt(rawkey, pair.getPrivate());  
  15. //Base64編碼成字符串展示  
  16. String base64Key = Base64.encode(key);  
  17. mKeyText.setText(base64Key);  
  18. } catch (Exception e) {  
  19. e.printStackTrace();  
  20.  
  21.  
  22. 其中AES.getRawKey(seed)中主要是通過AES密鑰生成器來生成128位的密鑰,具體實現(xiàn):  
  23. /** 
  24.  * 生成用AES算法來加密的密鑰流,這個密鑰會被應用簽名{@link SignKey}的密鑰進行二次加密  
  25. */  
  26. public static byte[] getRawKey(byte[] seed) throws Exception {  
  27. KeyGenerator kgen = KeyGenerator.getInstance("AES");  
  28. SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");  
  29. sr.setSeed(seed);  
  30. //192 and 256 bits may not be available  
  31. kgen.init(128, sr);  
  32. SecretKey skey = kgen.generateKey();  
  33. return skey.getEncoded();  

SignKey.getSignKeyPair()是獲得RSA算法所需的公私鑰,是從我們的應用簽名來的,大家應該都很熟悉了,應用打包上傳是需要簽名打包的。 

Android外部文件加解密及應用實踐

keystore

 

java提供了api獲取testkey.keystore文件(自己用studio生成一個)的私鑰和證書,把testkey.keystore文件放到目錄中: 

  1. /**  
  2. * Author:xishuang  
  3. Date:2018.05.06  
  4. * Des:根據(jù)導入的應用簽名,讀取其中的密鑰對和證書  
  5. */  
  6. public class SignKey {  
  7. //應用簽名  
  8. private static final String keystoreName = "testkey.keystore" 
  9. private static final String keystorePassword = "123456" 
  10. //應用簽名的別名  
  11. private static final String alias = "key0" 
  12. private static final String aliasPassword = "123456" 
  13. /**  
  14. * 獲取簽名的密鑰對,用來給密鑰加密  
  15. */  
  16. public static KeyPair getSignKeyPair() {  
  17. try {  
  18. File storeFile = new File(keystoreName);  
  19. if (!storeFile.exists()) {  
  20. throw new IllegalArgumentException("還沒設置簽名文件!");  
  21.  
  22. String keyStoreType = "JKS" 
  23. char[] keystorepasswd = keystorePassword.toCharArray();  
  24. char[] keyaliaspasswd = aliasPassword.toCharArray();  
  25. KeyStore keystore = KeyStore.getInstance(keyStoreType);  
  26. keystore.load(new FileInputStream(storeFile), keystorepasswd);  
  27. //拿私鑰  
  28. Key key = keystore.getKey(alias, keyaliaspasswd);  
  29. if (key instanceof PrivateKey) {  
  30. //拿公鑰  
  31. Certificate cert = keystore.getCertificate(alias);  
  32. PublicKey publicKey = cert.getPublicKey();  
  33. ///公私鑰存到KeyPair 
  34.  return new KeyPair(publicKey, (PrivateKey) key);  
  35.  
  36. } catch (Exception e) {  
  37. e.printStackTrace();  
  38.  
  39. return null 
  40.  

拿testkey.keystore所需的參數(shù)都在跟我們打包應用簽名所需一樣,通過java提供的keystore類獲取。然后就是用剛拿到的testkey.keystore私鑰來加密AES密鑰,再通過Base64轉(zhuǎn)換一下編碼成字符串展示出來,只是為了把密鑰展示出來才轉(zhuǎn)換編碼的。 

Android外部文件加解密及應用實踐

密鑰Base64編碼.png

 

2.2、導出密鑰

把密鑰導出成文件,下次直接導入密鑰用來解密文件,導出密鑰需要先用Base64把文本框里的Base64密鑰字符串轉(zhuǎn)換為Byte[]再存。 

  1. byte[] key = Base64.decode(base64Key);  
  2. //將raw key輸出  
  3. File keyFile = new File(dir, "testkey.dat");  
  4. FileOutputStream fos = new FileOutputStream(keyFile); 

2.3、加密文件

密鑰已有,AES算法又是現(xiàn)成的,直接調(diào)用api加密就行了: 

  1. private static final String AES = "AES" 
  2. /**  
  3. * AES算法加密文件  
  4.  
  5. * @param rawKey AES密鑰  
  6. * @param fromFile 要加密的文件  
  7. * @param toFile 加密后文件  
  8. */  
  9. public static void encryptFile(byte[] rawKey, File fromFile, File toFile) throws Exception {  
  10. if (!fromFile.exists()) {  
  11. throw new NullPointerException("文件不存在");  
  12.  
  13. if (toFile.exists()) {  
  14. toFile.delete();  
  15.  
  16. SecretKeySpec skeySpec = new SecretKeySpec(rawKey, AES);  
  17. Cipher cipher = Cipher.getInstance(AES); 
  18.  //加密模式  
  19. cipher.init(Cipher.ENCRYPT_MODE, skeySpec);  
  20. FileInputStream fis = new FileInputStream(fromFile);  
  21. FileOutputStream fos = new FileOutputStream(toFile, true);  
  22. byte[] buffer = new byte[512 * 1024 - 16];  
  23. int offset; 
  24. //使用加密流來加密  
  25. CipherInputStream bis = new CipherInputStream(fis, cipher);  
  26. while ((offset = bis.read(buffer)) != -1) { 
  27.  fos.write(buffer, 0, offset);  
  28. fos.flush();  
  29.  
  30. fos.close();  
  31. fis.close();  

選擇文件,通過AES算法和AES密鑰加密,最后效果如下,沒有密鑰能解密出來算我輸。 

Android外部文件加解密及應用實踐

加密前后

 

3、第2塊:解密工具進行解密

解密過程其實沒啥必要講了,因為解密過程是加密過程的逆過程。

這個解密不是在應用中用的,是為了便于我們更新加密文件,修改文件之前必須要先把文件先解密。 

Android外部文件加解密及應用實踐

解密

 

3.1、導入AES密鑰

這個密鑰就是我們前面生成的密鑰,導進來后用應用簽名的RSA公鑰解密AES密鑰即可:

 

  1. //獲取被加密的密鑰raw key  
  2. String keyStr = mKeyText.getText(); 
  3. byte[] key = Base64.decode(keyStr);  
  4. //獲取應用簽名密鑰對,公鑰解密raw key  
  5. KeyPair keypair = SignKey.getSignKeyPair();  
  6. byte[] rawkey = RSA.decrypt(key, keypair.getPublic());  
  7. //用raw key去解密文件  
  8. AES.decryptFile(rawkey, fromFile, toFile); 

3.2、解密文件

拿到純潔版AES密鑰之后就可以直接調(diào)用AES算法解密文件了: 

  1. /**  
  2. * AES算法解密文件  
  3.  
  4. * @param rawKey AES密鑰  
  5. * @param fromFile 被加密的文件  
  6. * @param toFile 解密后文件  
  7. */  
  8. public static void decryptFile(byte[] rawKey, File fromFile, File toFile) throws Exception {  
  9. if (!fromFile.exists()) {  
  10. throw new NullPointerException("文件不存在");  
  11.  
  12. if (toFile.exists()) {  
  13. toFile.delete();  
  14.  
  15. SecretKeySpec skeySpec = new SecretKeySpec(rawKey, AES);  
  16. Cipher cipher = Cipher.getInstance(AES);  
  17. //解密模式  
  18. cipher.init(Cipher.DECRYPT_MODE, skeySpec);  
  19. FileInputStream fis = new FileInputStream(fromFile);  
  20. FileOutputStream fos = new FileOutputStream(toFile, true);  
  21. byte[] buffer = new byte[512 * 1024 + 16];  
  22. int offset;  
  23. //使用解密流來解密  
  24. CipherInputStream cipherInputStream = new CipherInputStream(fis, cipher);  
  25. while ((offset = cipherInputStream.read(buffer)) != -1) {  
  26. fos.write(buffer, 0, offset);  
  27. fos.flush();  
  28.  
  29. fos.close();  
  30. fis.close();  

和AES加密過程一對比,會發(fā)現(xiàn)只是切換一下AES算法模式。

3、第3塊:Android應用中解密文件

要解密文件,需要在資源文件夾中加入被加密的AES密鑰,這個密鑰就是上面導出來的,還有就是被加密后的文件。能正確解密的前提是你應用簽名和用來給文件加密過程中用到的簽名是同一個。 

Android外部文件加解密及應用實踐

資源文件

 

3.1、解密AES密鑰

在Android應用中解密文件與在java工具中解密文件,區(qū)別主要在于RSA密鑰的獲取,在java工具中應用簽名testkey.keystore是開發(fā)者擁有的,可以拿到其中的全部信息,而在Android中應用是要發(fā)布到應用市場的,任何人都可以下載我們的包,應用簽名只能通過Android提供的api拿到其公鑰。 

  1. /**  
  2. * Author:xishuang  
  3. Date:2018.05.06  
  4. * Des:應用簽名讀取工具類  
  5. */  
  6. public class SignKey {  
  7. /**  
  8. * 獲取當前應用的簽名  
  9.  
  10. * @param context 上下文  
  11. */  
  12. public static byte[] getSign(Context context) {  
  13. PackageManager pm = context.getPackageManager(); 
  14. try {  
  15. PackageInfo info = pm.getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);  
  16. Signature[] signatures = info.signatures;  
  17. if (signatures != null) {  
  18. return signatures[0].toByteArray();  
  19.  
  20. } catch (NameNotFoundException e) {  
  21. e.printStackTrace();  
  22.  
  23. return null 
  24.  
  25. /**  
  26. * 根據(jù)簽名去獲取公鑰  
  27. */  
  28. public static PublicKey getPublicKey(byte[] signature) {  
  29. try {  
  30. CertificateFactory certFactory = CertificateFactory  
  31. .getInstance("X.509");  
  32. X509Certificate cert = (X509Certificate) certFactory  
  33. .generateCertificate(new ByteArrayInputStream(signature));  
  34. return cert.getPublicKey();  
  35. } catch (CertificateException e) {  
  36. e.printStackTrace();  
  37.  return null 
  38.  

拿到應用簽名testkey.keystore的公鑰之后的流程就和在java工具中的操作基本一致了,用RSA公鑰來解密AES密鑰。 

  1. private static final String SIMPLE_KEY_DATA = "testkey.dat" 
  2. /**  
  3. * 獲取解密之后的文件加密密鑰  
  4. */  
  5. private static byte[] getRawKey(Context context) throws Exception {  
  6. //獲取應用的簽名密鑰  
  7. byte[] sign = SignKey.getSign(context);  
  8. PublicKey pubKey = SignKey.getPublicKey(sign);  
  9. //獲取加密文件的密鑰  
  10. InputStream keyis = context.getAssets().open(SIMPLE_KEY_DATA);  
  11. byte[] key = getData(keyis);  
  12. //解密密鑰  
  13. return RSA.decrypt(key, pubKey);  

最后再用解密之后的AES密鑰來解密文件。

3.2、AES密鑰解密文件

通過資源管理器拿到加密文件的文件流,通過AES密鑰來用AES算法來解密文件流。 

  1. /**  
  2. * 獲取解密之后的文件流  
  3. */  
  4. public static InputStream onObtainInputStream(Context context) {  
  5. try {  
  6. AssetManager assetmanager = context.getAssets();  
  7. InputStream is = assetmanager.open("encrypt_測試.txt");  
  8. byte[] rawkey = getRawKey(context);  
  9. //使用解密流,數(shù)據(jù)寫出到基礎OutputStream之前先對該會先對數(shù)據(jù)進行解密  
  10. SecretKeySpec skeySpec = new SecretKeySpec(rawkey, "AES");  
  11. Cipher cipher = Cipher.getInstance("AES");  
  12. cipher.init(Cipher.DECRYPT_MODE, skeySpec);  
  13. return new CipherInputStream(is, cipher);  
  14. } catch (Exception e) {  
  15. e.printStackTrace();  
  16.  
  17. return null 

拿到加密后文件流之后就達成目的了,可以解析成字符串展示出來: 

  1. private void inputData() {  
  2. InputStream in = DecryptUtil.onObtainInputStream(this);  
  3. try {  
  4. BufferedReader reader = new BufferedReader(new InputStreamReader(in"GBK"));  
  5. StringBuilder sb = new StringBuilder();  
  6. String line;  
  7. while ((line = reader.readLine()) != null) {  
  8. sb.append(line + "\n");  
  9.  
  10. contentTv.setText(sb.toString());  
  11. } catch (IOException e) {  
  12. e.printStackTrace();  
  13. } finally {  
  14. try {  
  15. in.close();  
  16. } catch (IOException e) {  
  17. e.printStackTrace();  
  18.  
  19.  

實例效果圖如下,請關注紅框里面內(nèi)容,因為懶得新建項目,用原有項目測試了一下: 

Android外部文件加解密及應用實踐

效果

 

目前工具使用的是市面上比較常見的加解密算法,可以換一下算法,比如DES或者其它的對稱和非對稱算法,甚至是自己改動的算法,想運行示例演示的話: 

Android外部文件加解密及應用實踐

QQ截圖20180508234849.png

 

就是運行一下java文件,就可以打開加解密小工具了,加解密工具界面是仿我司工具包中抽出來的小部分的,畢竟寫界面好煩,感謝我司大神多年前就寫出了如此工具。

責任編輯:未麗燕 來源: 簡書
相關推薦

2017-12-07 10:25:55

LinuxGPG加密解密

2015-02-11 15:27:26

微信SDK

2015-02-11 15:23:13

微信SDK

2022-01-26 07:25:09

PythonRSA加解密

2016-09-27 19:30:11

2020-12-13 09:40:11

物聯(lián)網(wǎng)物聯(lián)網(wǎng)安全加密方法

2013-11-15 13:06:52

透明加解密hook技術數(shù)據(jù)安全

2022-07-27 08:49:34

接口加密解密

2011-08-01 14:36:06

加密RSA

2021-12-15 14:39:50

LinuxGPG加解密文件

2024-09-09 08:53:56

2024-09-27 15:24:15

Spring數(shù)據(jù)加解密

2017-02-09 11:34:57

大數(shù)據(jù)用戶畫像應用實踐

2010-03-02 11:12:33

Android應用開發(fā)

2022-09-14 18:23:01

工具加解密接口

2022-12-14 09:06:58

接口Spring解密

2022-11-18 18:36:24

2023-03-10 18:34:31

2021-10-12 10:43:38

區(qū)塊鏈技術智能

2015-02-11 15:56:20

微信SDK
點贊
收藏

51CTO技術棧公眾號

九九热视频精品| 三年中国国语在线播放免费| 开心激情综合网| 中文在线不卡| 在线观看免费高清视频97| 亚洲午夜精品一区| 激情网站在线| 久久婷婷成人综合色| 国产欧美va欧美va香蕉在| 日韩高清dvd碟片| 九九热hot精品视频在线播放| 国产suv精品一区二区三区| 午夜伦理精品一区| 免费看日本黄色片| 亚洲高清999| 天天色天天操综合| 一区二区三区四区欧美| 欧美一区二区三区黄片| 视频在线观看国产精品| 九九久久久久99精品| 3d动漫精品啪啪一区二区下载| 国产激情小视频在线| thepron国产精品| 国产精品自拍偷拍视频| 国产午夜久久久| 欧洲激情视频| 亚洲精品美女久久| 久久久久久久久久一区| 成人国产电影在线观看| 中文字幕一区在线观看| 快播日韩欧美| www.天堂av.com| 秋霞国产午夜精品免费视频| 久久久久久亚洲精品不卡| 男人的天堂官网| 久久免费视频66| 欧美精三区欧美精三区| 国产又大又硬又粗| 草莓视频丝瓜在线观看丝瓜18| 国产91精品一区二区麻豆亚洲| 超在线视频97| 精品亚洲aⅴ无码一区二区三区| 韩国女主播一区二区| 亚洲第一搞黄网站| 9l视频自拍9l视频自拍| 福利视频在线导航| 26uuu久久天堂性欧美| 成人资源av| 国产黄色美女视频| 老司机午夜精品视频在线观看| 在线视频免费一区二区| 国产精品麻豆入口| 91欧美极品| 欧美一区在线视频| 黑森林精品导航| **欧美日韩在线观看| 欧美日韩综合视频网址| 国产精品又粗又长| 丰满大乳少妇在线观看网站| 亚洲精品中文在线观看| 热这里只有精品| 国产在线高清理伦片a| 国产精品久久久久久久久动漫 | 天天综合狠狠精品| 国产又爽又黄网站亚洲视频123| 日韩综合小视频| 日本一区二区在线播放| 青草视频在线观看免费| 国产亚洲精品久久久久婷婷瑜伽| 中文字幕av日韩| 美女100%露胸无遮挡| 欧美色爱综合| www.亚洲成人| 538精品在线观看| 中文不卡在线| 隔壁老王国产在线精品| 日本少妇bbwbbw精品| 国产亚洲亚洲| 国产精品久久久久久久久| 国产精品乱码一区二区视频| 日本vs亚洲vs韩国一区三区| 国产一区二区丝袜| 国产成人精品一区二区无码呦 | 欧美性感美女一区二区| 亚洲图片欧美日产| 超碰97av在线| 综合激情婷婷| 97热在线精品视频在线观看| 激情视频网站在线观看| 蜜桃视频在线一区| 国产美女久久久| 国产v在线观看| 91小视频在线免费看| 欧美连裤袜在线视频| 欧美被日视频| 亚洲超碰精品一区二区| 日韩av在线综合| 91国产一区| 日韩成人在线网站| 欧美人与禽zoz0善交| 欧美激情自拍| 国产97在线|日韩| 国产熟女一区二区三区五月婷| 麻豆精品国产传媒mv男同| 91青草视频久久| 午夜小视频在线播放| 国产精品久久久久天堂| 日韩精品一区在线视频| 精品久久在线| 亚洲国产精品嫩草影院久久| 污污视频网站在线免费观看| 亚洲日本成人| 成人在线播放av| 欧美成人综合在线| 亚洲精品精品亚洲| 久久久久久香蕉| 国产suv精品一区| xvideos亚洲| 五月婷婷色丁香| 国产成人亚洲综合色影视| 日本免费一区二区三区| 欧美1234区| 欧美人xxxx| 日本xxxxxxxxx18| 樱桃成人精品视频在线播放| 国产欧美一区二区三区视频| 精品av中文字幕在线毛片| 亚洲精品一卡二卡| 色悠悠久久综合网| 台湾色综合娱乐中文网| 欧美激情精品久久久久| 伊人久久一区二区| 久久亚洲精品国产精品紫薇| 97在线国产视频| 欧美第一在线视频| 日韩中文字幕视频| 奴色虐av一区二区三区| 99re6这里只有精品视频在线观看| 老牛影视免费一区二区| 日本无删减在线| 欧美一区二区三区婷婷月色| 黄色一级片一级片| 丝袜诱惑制服诱惑色一区在线观看 | 欧美日韩亚洲视频| 国产精品偷伦视频免费观看了| avtt综合网| 欧美另类极品videosbestfree| 久久精品久久精品久久| 国产麻豆成人精品| 亚洲一区二区三区乱码 | 成人免费在线播放视频| 韩国中文字幕av| 成人影院天天5g天天爽无毒影院| 日韩中文字幕精品| 亚洲图片视频小说| 中文av字幕一区| 在线观看国产中文字幕| 精品国产一区二区三区香蕉沈先生 | 欧美视频免费一区二区三区| 亚洲大片精品永久免费| 精品久久久久久无码人妻| 欧美特黄一级| 国产高清精品一区二区三区| 日本乱理伦在线| 亚洲精品在线免费观看视频| 久久久久久欧美精品se一二三四| 久久永久免费| 日韩欧美视频一区二区| 成人免费网站www网站高清| 亚洲人永久免费| 亚洲中文字幕在线观看| 国产精品传媒入口麻豆| 视频区 图片区 小说区| 欧美日韩调教| 久久艹中文字幕| 成人av色网站| 欧美成年人视频网站欧美| 乱精品一区字幕二区| 日韩欧美福利视频| 我要看一级黄色录像| 国产成人综合网| 久久精品99国产| 午夜av一区| 国产尤物99| 日韩制服一区| 九色91av视频| 欧美精品少妇| 日韩视频一区在线观看| 91视频免费网址| 国产精品成人免费| 日本三级日本三级日本三级极| 在线电影一区二区| 精品国产免费人成电影在线观... 精品国产免费久久久久久尖叫 | 亚洲日本成人女熟在线观看| 中文字幕日本人妻久久久免费 | 欧美一区2区三区4区公司二百| 成人日韩欧美| 欧美日韩一区二区在线| 美国黑人一级大黄| 国产一区二区在线视频| 一区二区传媒有限公司| 尤物tv在线精品| 国产精品久久在线观看| 高h视频在线播放| 亚洲一级黄色片| 国产精品视频一二区| 亚洲综合男人的天堂| 亚洲综合第一区| 国产91精品久久久久久久网曝门| 中文字幕精品一区日韩| 亚洲一区二区免费在线观看| 国产91色在线| 日韩av激情| 国产亚洲欧美一区| 亚洲精品国产av| 欧美日韩精品高清| 日产欧产va高清| 国产精品电影一区二区三区| 中文字幕乱视频| 国产在线不卡视频| 高清欧美精品xxxxx| 精品国产美女| 国产亚洲二区| 日韩一区二区三区色| 日本成人免费在线| 免费网站看v片在线a| 日韩精品免费综合视频在线播放| 日日摸天天添天天添破| 中文字幕综合网| 中文字幕av观看| 紧缚捆绑精品一区二区| 天堂av在线网站| 亚洲一区免费| 人妻激情另类乱人伦人妻| 欧美一区电影| 欧美日本国产精品| 国产免费区一区二区三视频免费 | 性久久久久久久久| 一级二级黄色片| 99精品桃花视频在线观看| 午夜影院免费观看视频| 日本欧洲一区二区| 美女日批免费视频| 在线中文一区| 9l视频自拍9l视频自拍| 色天天久久综合婷婷女18| 免费一区二区三区| 亚洲涩涩av| 国产精华一区二区三区| 精品国产亚洲一区二区在线观看| 欧美成人性生活| 成人短视频在线观看| 久久精品电影一区二区| aaa在线观看| 亚洲天堂男人天堂| a天堂在线资源| 亚洲区一区二区| 亚洲日本香蕉视频| 亚洲护士老师的毛茸茸最新章节| 综合久久中文字幕| 日本精品免费观看高清观看| 91精品国产综合久久久蜜臀九色 | 亚洲va国产va天堂va久久| 四虎精品永久免费| 日韩美女写真福利在线观看| 成人美女黄网站| 日韩av免费一区| 成人影院网站| 国产精品久久久久9999| 亚洲美女尤物影院| 欧美中文字幕在线观看| 五月天av在线| 日韩免费av片在线观看| 一区二区电影免费观看| 日本久久久久久久久久久| 成人性片免费| 成人黄色午夜影院| 成人噜噜噜噜| 91九色国产视频| 电影一区二区在线观看| 精品国产综合久久| 亚洲成在人线免费观看| 一区二区三区四区| 欧美欧美天天天天操| 日韩网站在线免费观看| 欧美区一区二| 日韩中文字幕组| 男女男精品视频网| 天堂在线一区二区三区| av激情亚洲男人天堂| 性欧美丰满熟妇xxxx性仙踪林| 国产一区三区三区| 性高潮久久久久久| 26uuu欧美| 大胸美女被爆操| 亚洲色图视频免费播放| 日韩欧美视频在线免费观看| 日韩欧美精品网址| 中文字幕人妻一区二区三区视频| 色综合婷婷久久| 免费看av在线| 日韩欧美一区二区久久婷婷| 国产原创av在线| www.国产精品一二区| 丁香花在线电影| 国产精品影院在线观看| www.久久东京| 日韩在线导航| 亚洲手机在线| 久久精品免费网站| 国产成人av自拍| 一区二区三区少妇| 亚洲制服欧美中文字幕中文字幕| 黄色一级大片在线免费观看| 亚洲一区中文日韩| 在线视频播放大全| 亚洲激情中文字幕| 五月天婷婷在线视频| 麻豆成人精品| 欧美一区二区.| 97精品资源在线观看| 国产精品国产精品| 亚洲成人一区| 少妇人妻互换不带套| 成人深夜福利app| 中文字幕免费在线看线人动作大片 | 视频在线观看一区二区| av电影院在线看| 91精品国产综合久久男男| 欧美性生活一级片| 精品人妻人人做人人爽| 石原莉奈在线亚洲二区| 免费啪视频在线观看| 亚洲欧美偷拍三级| 久久久久久亚洲av无码专区| 亚洲成人动漫在线播放| 日韩av激情| 成人精品一区二区三区| 国产一区二区区别| 国产 日韩 亚洲 欧美| 国精产品一区一区三区mba桃花 | 国产欧美日本在线| 成人在线一区| 美女福利视频在线| 成人精品国产福利| 青青操视频在线播放| 日韩一区二区在线看| 午夜视频成人| 国产精品久久久久久久美男| 精品国产一区二区三区av片| 超碰97人人射妻| 99在线精品一区二区三区| 日韩激情一区二区三区| 337p亚洲精品色噜噜噜| 国产h视频在线观看| 国产精品久久激情| 一道本一区二区三区| 日韩中文字幕三区| 久久久精品一品道一区| 人人干人人干人人干| 亚洲国产日韩欧美综合久久| 小草在线视频免费播放| 都市激情久久久久久久久久久| 日韩av黄色在线| 日本丰满少妇黄大片在线观看| 久久久久国产一区二区| 99久久人妻精品免费二区| 亚洲超碰97人人做人人爱| 三级做a全过程在线观看| 久久人人爽国产| 久久久久久毛片免费看 | 在线观看国产成人| 日韩在线免费视频| 欧美一区二区三区婷婷| 一区二区精品免费视频| 国产很黄免费观看久久| 成人一级黄色大片| 欧美一区二区三区思思人| 九色91在线| 国产在线视频欧美一区二区三区| 久久精品国产大片免费观看| 欧美在线观看成人| 中文字幕 久热精品 视频在线| 免费无遮挡无码永久在线观看视频| 欧美性猛交xxxx偷拍洗澡| 九一在线视频| 国产剧情久久久久久| 99精品综合| 一级黄色片毛片| 欧美性猛交xxxx免费看漫画| 成年人在线观看| www国产亚洲精品| 久久福利一区| 日本美女黄色一级片| 精品奇米国产一区二区三区| 忘忧草在线日韩www影院| 欧美第一黄网| 国产不卡免费视频| 中文字幕超碰在线| 亚洲香蕉成视频在线观看|