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

如何使用Python 3的兩個庫來加解密字符串

安全
Python 3 的標準庫中沒多少用來解決加密的,不過卻有用于處理哈希的庫。在這里我們會對其進行一個簡單的介紹,但重點會放在兩個第三方的軟件包:PyCrypto 和 cryptography 上。我們將學習如何使用這兩個庫,來加密和解密字符串。

[[170242]]

Python 3 的標準庫中沒多少用來解決加密的,不過卻有用于處理哈希的庫。在這里我們會對其進行一個簡單的介紹,但重點會放在兩個第三方的軟件包:PyCrypto 和 cryptography 上。我們將學習如何使用這兩個庫,來加密和解密字符串。

哈希

如果需要用到安全哈希算法或是消息摘要算法,那么你可以使用標準庫中的 hashlib 模塊。這個模塊包含了符合 FIPS(美國聯邦信息處理標準)的安全哈希算法,包括 SHA1,SHA224,SHA256,SHA384,SHA512 以及 RSA 的 MD5 算法。Python 也支持 adler32 以及 crc32 哈希函數,不過它們在 zlib 模塊中。

哈希的一個最常見的用法是,存儲密碼的哈希值而非密碼本身。當然了,使用的哈希函數需要穩健一點,否則容易被破解。另一個常見的用法是,計算一個文件的哈希值,然后將這個文件和它的哈希值分別發送。接收到文件的人可以計算文件的哈希值,檢驗是否與接受到的哈希值相符。如果兩者相符,就說明文件在傳送的過程中未經篡改。

讓我們試著創建一個 md5 哈希:

  1. >>> import hashlib 
  2. >>> md5 = hashlib.md5() 
  3. >>> md5.update('Python rocks!'
  4. Traceback (most recent call last): 
  5.   File "<pyshell#5>", line 1, in <module> 
  6.     md5.update('Python rocks!'
  7. TypeError: Unicode-objects must be encoded before hashing 
  8. >>> md5.update(b'Python rocks!'
  9. >>> md5.digest() 
  10. b'\x14\x82\xec\x1b#d\xf6N}\x16*+[\x16\xf4w' 

讓我們花點時間一行一行來講解。首先,我們導入 hashlib ,然后創建一個 md5 哈希對象的實例。接著,我們向這個實例中添加一個字符串后,卻得到了報錯信息。原來,計算 md5 哈希時,需要使用字節形式的字符串而非普通字符串。正確添加字符串后,我們調用它的 digest 函數來得到哈希值。如果你想要十六進制的哈希值,也可以用以下方法:

  1. >>> md5.hexdigest() 
  2. '1482ec1b2364f64e7d162a2b5b16f477' 

實際上,有一種精簡的方法來創建哈希,下面我們看一下用這種方法創建一個 sha1 哈希:

  1. >>> sha = hashlib.sha1(b'Hello Python').hexdigest() 
  2. >>> sha 
  3. '422fbfbc67fe17c86642c5eaaa48f8b670cbed1b' 

可以看到,我們可以同時創建一個哈希實例并且調用其 digest 函數。然后,我們打印出這個哈希值看一下。這里我使用 sha1 哈希函數作為例子,但它不是特別安全,讀者可以隨意嘗試其他的哈希函數。

密鑰導出

Python 的標準庫對密鑰導出支持較弱。實際上,hashlib 函數庫提供的唯一方法就是 pbkdf2_hmac 函數。它是 PKCS#5 的基于口令的第二個密鑰導出函數,并使用 HMAC 作為偽隨機函數。因為它支持“加鹽(salt)”和迭代操作,你可以使用類似的方法來哈希你的密碼。例如,如果你打算使用 SHA-256 加密方法,你將需要至少 16 個字節的“鹽”,以及最少 100000 次的迭代操作。

簡單來說,“鹽”就是隨機的數據,被用來加入到哈希的過程中,以加大破解的難度。這基本可以保護你的密碼免受字典和彩虹表(rainbow table)的攻擊。

讓我們看一個簡單的例子:

  1. >>> import binascii 
  2. >>> dk = hashlib.pbkdf2_hmac(hash_name='sha256'
  3.         password=b'bad_password34',  
  4.         salt=b'bad_salt',  
  5.         iterations=100000) 
  6. >>> binascii.hexlify(dk) 
  7. b'6e97bad21f6200f9087036a71e7ca9fa01a59e1d697f7e0284cd7f9b897d7c02' 

這里,我們用 SHA256 對一個密碼進行哈希,使用了一個糟糕的鹽,但經過了 100000 次迭代操作。當然,SHA 實際上并不被推薦用來創建密碼的密鑰。你應該使用類似 scrypt 的算法來替代。另一個不錯的選擇是使用一個叫 bcrypt 的第三方庫,它是被專門設計出來哈希密碼的。

PyCryptodome

PyCrypto 可能是 Python 中密碼學方面最有名的第三方軟件包。可惜的是,它的開發工作于 2012 年就已停止。其他人還在繼續發布最新版本的 PyCrypto,如果你不介意使用第三方的二進制包,仍可以取得 Python 3.5 的相應版本。比如,我在 Github (https://github.com/sfbahr/PyCrypto-Wheels) 上找到了對應 Python 3.5 的 PyCrypto 二進制包。

幸運的是,有一個該項目的分支 PyCrytodome 取代了 PyCrypto 。為了在 Linux 上安裝它,你可以使用以下 pip 命令:

  1. pip install pycryptodome 

在 Windows 系統上安裝則稍有不同:

  1. pip install pycryptodomex 

如果你遇到了問題,可能是因為你沒有安裝正確的依賴包(LCTT 譯注:如 python-devel),或者你的 Windows 系統需要一個編譯器。如果你需要安裝上的幫助或技術支持,可以訪問 PyCryptodome 的網站。

還值得注意的是,PyCryptodome 在 PyCrypto 最后版本的基礎上有很多改進。非常值得去訪問它們的主頁,看看有什么新的特性。

加密字符串

訪問了他們的主頁之后,我們可以看一些例子。在第一個例子中,我們將使用 DES 算法來加密一個字符串:

  1. >>> from Crypto.Cipher import DES 
  2. >>> key = 'abcdefgh' 
  3. >>> def pad(text): 
  4.         while len(text) % 8 != 0: 
  5.             text += ' ' 
  6.         return text 
  7. >>> des = DES.new(key, DES.MODE_ECB) 
  8. >>> text = 'Python rocks!' 
  9. >>> padded_text = pad(text) 
  10. >>> encrypted_text = des.encrypt(text) 
  11. Traceback (most recent call last): 
  12.   File "<pyshell#35>", line 1, in <module> 
  13.     encrypted_text = des.encrypt(text) 
  14.   File "C:\Programs\Python\Python35-32\lib\site-packages\Crypto\Cipher\blockalgo.py", line 244, in encrypt 
  15.     return self._cipher.encrypt(plaintext) 
  16. ValueError: Input strings must be a multiple of 8 in length 
  17. >>> encrypted_text = des.encrypt(padded_text) 
  18. >>> encrypted_text 
  19. b'>\xfc\x1f\x16x\x87\xb2\x93\x0e\xfcH\x02\xd59VQ' 

這段代碼稍有些復雜,讓我們一點點來看。首先需要注意的是,DES 加密使用的密鑰長度為 8 個字節,這也是我們將密鑰變量設置為 8 個字符的原因。而我們需要加密的字符串的長度必須是 8 的倍數,所以我們創建了一個名為 pad 的函數,來給一個字符串末尾填充空格,直到它的長度是 8 的倍數。然后,我們創建了一個 DES 的實例,以及我們需要加密的文本。我們還創建了一個經過填充處理的文本。我們嘗試著對未經填充處理的文本進行加密,啊歐,報了一個 ValueError 錯誤!我們需要對經過填充處理的文本進行加密,然后得到加密的字符串。(LCTT 譯注:encrypt 函數的參數應為 byte 類型字符串,代碼為:encrypted_text = des.encrypt(padded_text.encode('utf-8')))

知道了如何加密,還要知道如何解密:

  1. >>> des.decrypt(encrypted_text) 
  2. b'Python rocks!   ' 

幸運的是,解密非常容易,我們只需要調用 des 對象的 decrypt 方法就可以得到我們原來的 byte 類型字符串了。下一個任務是學習如何用 RSA 算法加密和解密一個文件。首先,我們需要創建一些 RSA 密鑰。

創建 RSA 密鑰

如果你希望使用 RSA 算法加密數據,那么你需要擁有訪問 RAS 公鑰和私鑰的權限,否則你需要生成一組自己的密鑰對。在這個例子中,我們將生成自己的密鑰對。創建 RSA 密鑰非常容易,所以我們將在 Python 解釋器中完成。

  1. >>> from Crypto.PublicKey import RSA 
  2. >>> code = 'nooneknows' 
  3. >>> key = RSA.generate(2048) 
  4. >>> encrypted_key = key.exportKey(passphrase=code, pkcs=8,  
  5.         protection="scryptAndAES128-CBC"
  6. >>> with open('/path_to_private_key/my_private_rsa_key.bin''wb'as f: 
  7.         f.write(encrypted_key) 
  8. >>> with open('/path_to_public_key/my_rsa_public.pem''wb'as f: 
  9.         f.write(key.publickey().exportKey()) 

首先我們從 Crypto.PublicKey 包中導入 RSA,然后創建一個傻傻的密碼。接著我們生成 2048 位的 RSA 密鑰。現在我們到了關鍵的部分。為了生成私鑰,我們需要調用 RSA 密鑰實例的 exportKey 方法,然后傳入密碼,使用的 PKCS 標準,以及加密方案這三個參數。之后,我們把私鑰寫入磁盤的文件中。

接下來,我們通過 RSA 密鑰實例的 publickey 方法創建我們的公鑰。我們使用方法鏈調用 publickey 和 exportKey 方法生成公鑰,同樣將它寫入磁盤上的文件。

加密文件

有了私鑰和公鑰之后,我們就可以加密一些數據,并寫入文件了。這里有個比較標準的例子:

  1. from Crypto.PublicKey import RSA 
  2. from Crypto.Random import get_random_bytes 
  3. from Crypto.Cipher import AES, PKCS1_OAEP 
  4. with open('/path/to/encrypted_data.bin''wb'as out_file: 
  5.     recipient_key = RSA.import_key( 
  6.         open('/path_to_public_key/my_rsa_public.pem').read()) 
  7.     session_key = get_random_bytes(16) 
  8.     cipher_rsa = PKCS1_OAEP.new(recipient_key) 
  9.     out_file.write(cipher_rsa.encrypt(session_key)) 
  10.     cipher_aes = AES.new(session_key, AES.MODE_EAX) 
  11.     data = b'blah blah blah Python blah blah' 
  12.     ciphertext, tag = cipher_aes.encrypt_and_digest(data) 
  13.     out_file.write(cipher_aes.nonce) 
  14.     out_file.write(tag) 
  15.     out_file.write(ciphertext) 

代碼的前三行導入 PyCryptodome 包。然后我們打開一個文件用于寫入數據。接著我們導入公鑰賦給一個變量,創建一個 16 字節的會話密鑰。在這個例子中,我們將使用混合加密方法,即 PKCS#1 OAEP ,也就是最優非對稱加密填充。這允許我們向文件中寫入任意長度的數據。接著我們創建 AES 加密,要加密的數據,然后加密數據。我們將得到加密的文本和消息認證碼。最后,我們將隨機數,消息認證碼和加密的文本寫入文件。

順便提一下,隨機數通常是真隨機或偽隨機數,只是用來進行密碼通信的。對于 AES 加密,其密鑰長度最少是 16 個字節。隨意用一個你喜歡的編輯器試著打開這個被加密的文件,你應該只能看到亂碼。

現在讓我們學習如何解密我們的數據。

  1. from Crypto.PublicKey import RSA 
  2. from Crypto.Cipher import AES, PKCS1_OAEP 
  3. code = 'nooneknows' 
  4. with open('/path/to/encrypted_data.bin''rb'as fobj: 
  5.     private_key = RSA.import_key( 
  6.         open('/path_to_private_key/my_rsa_key.pem').read(), 
  7.         passphrase=code) 
  8.     enc_session_key, nonce, tag, ciphertext = [ fobj.read(x)  
  9.                                                 for x in (private_key.size_in_bytes(),  
  10.                                                 16, 16, -1) ] 
  11.     cipher_rsa = PKCS1_OAEP.new(private_key) 
  12.     session_key = cipher_rsa.decrypt(enc_session_key) 
  13.     cipher_aes = AES.new(session_key, AES.MODE_EAX, nonce) 
  14.     data = cipher_aes.decrypt_and_verify(ciphertext, tag) 
  15. print(data) 

如果你認真看了上一個例子,這段代碼應該很容易解析。在這里,我們先以二進制模式讀取我們的加密文件,然后導入私鑰。注意,當你導入私鑰時,需要提供一個密碼,否則會出現錯誤。然后,我們文件中讀取數據,首先是加密的會話密鑰,然后是 16 字節的隨機數和 16 字節的消息認證碼,最后是剩下的加密的數據。

接下來我們需要解密出會話密鑰,重新創建 AES 密鑰,然后解密出數據。

你還可以用 PyCryptodome 庫做更多的事。不過我們要接著討論在 Python 中還可以用什么來滿足我們加密解密的需求。

cryptography 包

cryptography 的目標是成為“人類易于使用的密碼學包(cryptography for humans)”,就像 requests 是“人類易于使用的 HTTP 庫(HTTP for Humans)”一樣。這個想法使你能夠創建簡單安全、易于使用的加密方案。如果有需要的話,你也可以使用一些底層的密碼學基元,但這也需要你知道更多的細節,否則創建的東西將是不安全的。

如果你使用的 Python 版本是 3.5, 你可以使用 pip 安裝,如下:

  1. pip install cryptography 

你會看到 cryptography 包還安裝了一些依賴包(LCTT 譯注:如 libopenssl-devel)。如果安裝都順利,我們就可以試著加密一些文本了。讓我們使用 Fernet 對稱加密算法,它保證了你加密的任何信息在不知道密碼的情況下不能被篡改或讀取。Fernet 還通過 MultiFernet 支持密鑰輪換。下面讓我們看一個簡單的例子:

  1. >>> from cryptography.fernet import Fernet 
  2. >>> cipher_key = Fernet.generate_key() 
  3. >>> cipher_key 
  4. b'APM1JDVgT8WDGOWBgQv6EIhvxl4vDYvUnVdg-Vjdt0o=' 
  5. >>> cipher = Fernet(cipher_key) 
  6. >>> text = b'My super secret message' 
  7. >>> encrypted_text = cipher.encrypt(text) 
  8. >>> encrypted_text 
  9. (b'gAAAAABXOnV86aeUGADA6mTe9xEL92y_m0_TlC9vcqaF6NzHqRKkjEqh4d21PInEP3C9HuiUkS9f' 
  10.  b'6bdHsSlRiCNWbSkPuRd_62zfEv3eaZjJvLAm3omnya8='
  11. >>> decrypted_text = cipher.decrypt(encrypted_text) 
  12. >>> decrypted_text 
  13. b'My super secret message' 

首先我們需要導入 Fernet,然后生成一個密鑰。我們輸出密鑰看看它是什么樣兒。如你所見,它是一個隨機的字節串。如果你愿意的話,可以試著多運行 generate_key 方法幾次,生成的密鑰會是不同的。然后我們使用這個密鑰生成 Fernet 密碼實例。

現在我們有了用來加密和解密消息的密碼。下一步是創建一個需要加密的消息,然后使用 encrypt 方法對它加密。我打印出加密的文本,然后你可以看到你再也讀不懂它了。為了解密出我們的秘密消息,我們只需調用 decrypt 方法,并傳入加密的文本作為參數。結果就是我們得到了消息字節串形式的純文本。

小結

這一章僅僅淺顯地介紹了 PyCryptodome 和 cryptography 這兩個包的使用。不過這也確實給了你一個關于如何加密解密字符串和文件的簡述。請務必閱讀文檔,做做實驗,看看還能做些什么!

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2022-01-26 07:25:09

PythonRSA加解密

2010-03-16 10:43:26

Python字符串

2017-12-07 10:25:55

LinuxGPG加密解密

2020-05-12 08:53:15

JavaScript字符串處理庫

2023-01-09 09:52:06

Bash字符串

2024-05-10 09:26:26

Python字符串

2011-09-01 21:41:42

SQL Server把字符分割成兩個字符串

2020-06-04 08:10:30

Python字符串開發

2010-03-12 10:46:50

Python字符串

2010-02-01 16:22:36

Python字符串操作

2011-03-15 15:20:46

2021-05-07 08:03:05

JS動態合并

2010-03-12 18:29:56

Python字符串替換

2010-07-09 10:16:44

SQL Server臨

2024-09-06 17:32:55

字符串Python

2022-03-16 10:45:02

Python字符串

2023-12-15 10:27:01

暴力匹配算法Python字符串

2009-11-27 14:36:12

PHP運算符==

2010-03-12 17:35:00

Python字符串

2021-03-11 18:44:39

字符串SQL表達式
點贊
收藏

51CTO技術棧公眾號

国产精品中文久久久久久| 蜜臀va亚洲va欧美va天堂| 国产九色精品成人porny| 精品国产精品网麻豆系列| 久久99精品久久久久久噜噜| 5月婷婷6月丁香| 亚洲无码精品国产| 亚洲a级精品| 一区二区在线免费观看| 性欧美亚洲xxxx乳在线观看| 最新天堂在线视频| 人成免费电影一二三区在线观看| 欧美一级做a| 91丨porny丨国产入口| 久久国产精品影片| 性生活免费在线观看| 国模吧精品人体gogo| 国产偷自视频区视频一区二区| 欧美精品v日韩精品v韩国精品v| 欧美少妇一区| 亚洲午夜18毛片在线看| eeuss鲁片一区二区三区| 亚洲欧美一区二区三区国产精品| 国产精品久久久久久久一区探花| jizz欧美性20| 波多野结衣久久| 国产一区999| 操日韩av在线电影| 香蕉网在线视频| 希岛爱理一区二区三区av高清| 91亚洲精华国产精华精华液| 欧美在线观看网站| 精品无码国产污污污免费网站| 日本大片在线播放| 国产91色综合久久免费分享| 伦伦影院午夜日韩欧美限制| 日韩一级av毛片| 欧美激情久久久久久久久久久| 欧美日韩精品国产| 国产亚洲情侣一区二区无| 欧美日韩人妻精品一区二区三区| 日韩精品一区二区三区中文字幕 | 国产综合欧美在线看| 国产乱叫456在线| 国产精品久久占久久| 欧美日韩激情一区二区| 8x8x华人在线| 亚洲大尺度视频| 中国女人久久久| 国产亚洲精品91在线| 激情五月俺来也| 亚洲综合一区二区不卡| 99九九视频| 国产老头老太做爰视频| 只有精品亚洲| 日韩av综合在线| 一区中文字幕电影| 亚洲成国产人片在线观看| 精品福利影视| 亚洲国产精品无码久久久| 成人羞羞网站入口免费| 欧美日韩激情一区二区| 91福利国产成人精品播放| aaa大片在线观看| 91在线国内视频| 精品国产乱码久久久久久久软件| 手机av在线免费观看| 男人的天堂成人在线| 中文国产亚洲喷潮| 日韩精品aaa| 中文在线аv在线| 国产精品色婷婷久久58| 91免费在线观看网站| 天天操天天干天天摸| 亚洲理论电影网| 日韩av影视在线| jizz18女人| 国产午夜精品一区在线观看 | 日韩欧美二区三区| 黄色大片中文字幕| 国产黄色在线| av毛片久久久久**hd| 国产精品综合网站| 国产五月天婷婷| 99久久精品费精品国产| 欧美成人自拍视频| 国产第一页第二页| 老鸭窝毛片一区二区三区| 国产精品十八以下禁看| www.久久伊人| 麻豆91精品91久久久的内涵| 午夜精品久久久久久久久久久久| 国产无遮挡呻吟娇喘视频| 日本在线播放一区二区三区| 欧美亚洲一区在线| 美女黄页在线观看| 老妇喷水一区二区三区| 91精品国产一区| 国产97免费视频| 色小子综合网| 中日韩美女免费视频网址在线观看 | 妺妺窝人体色www看人体| 国产福利电影在线| 亚洲卡通动漫在线| 亚洲综合激情五月| 成人免费视频| 久久久久久9999| 久久久久一区二区三区| 特黄视频在线观看| 亚洲国产电影在线观看| 日韩久久不卡| 成年在线电影| 亚洲福利国产精品| 性欧美1819| 丝袜久久网站| 亚洲精品中文字| 国产精品一区二区人妻喷水| 日韩在线观看一区二区三区| 亚洲欧美中文字幕| 成人免费av片| 久久爱www成人| 国产一区二区三区视频在线观看| 欧美日韩一级在线观看| 日韩和欧美一区二区| 国产精品福利网| 中文字幕av无码一区二区三区| 日本成人在线不卡视频| 国产一区免费在线观看| wwwav在线| 3d性欧美动漫精品xxxx软件| 日韩毛片精品高清免费| 欧美一区亚洲二区| 一区二区三区视频网站| 国产精品你懂的在线欣赏| 国产原创中文在线观看| 一区二区精品伦理...| 日韩欧美亚洲国产精品字幕久久久| 女人黄色一级片| 欧美成人直播| 欧美老女人在线视频| 一区二区三区精彩视频| 狠狠爱www人成狠狠爱综合网| 国产精品久久麻豆| 国产精品精品国产色婷婷| 亚洲欧美日韩国产yyy| 中文字幕日本在线观看| 国产精品久久久久桃色tv| 欧美,日韩,国产在线| 一区二区三区自拍视频| 久久视频在线直播| 一区二区三区黄色片| 国产精品色一区二区三区| 污视频免费在线观看网站| 国产a久久精品一区二区三区 | 日韩一卡二卡在线| 久久综合久久99| 亚洲精品视频一区二区三区| 毛片无码国产| 制服视频三区第一页精品| 极品白嫩的小少妇| 亚洲人成精品久久久| 2019中文字幕免费视频| 巨骚激情综合| 亚洲精品视频在线观看网站| 天堂在线精品视频| 欧美特黄视频| 国产精品国产三级国产a| 成人网在线观看| 国产精品自拍第一页| 国产拍欧美日韩视频二区| 丰满女人性猛交| 91精品国产色综合久久不卡粉嫩| 久久精品电影网站| 99热在线观看免费精品| 麻豆国产精品官网| 国产又大又长又粗又黄| 亚洲一区二区三区中文字幕在线观看 | 一本到12不卡视频在线dvd| 91最新在线免费观看| 青青草视频在线免费直播| 亚洲精品av在线| 二区三区四区视频| 国产日韩一区| 五月天亚洲综合| 麻豆视频在线看| 91精品国产全国免费观看| 白白色免费视频| 经典三级在线一区| 日韩成人av电影在线| 激情亚洲小说| 日韩精品日韩在线观看| 亚洲大尺度在线观看| 日韩久久一区二区| 日本xxxx裸体xxxx| 久久99精品一区二区三区| 欧美极品色图| 99视频这里有精品| 国产91|九色| 久久综合网导航| 日韩电影中文字幕av| 精品成人无码久久久久久| 亚洲欧美中日韩| 一本加勒比波多野结衣| 欧美日韩亚洲一区二区三区在线| 国产欧美丝袜| 香蕉久久一区| 奇米影视亚洲狠狠色| 天天色综合av| 欧美日韩国产一二三| 国产精品老女人| 欧美中文字幕视频| 91九色在线porn| 亚洲精品久久久久中文字幕二区 | 黄色网址在线免费播放| 波多野结衣视频免费观看| 国产精品一品二品| 国产极品粉嫩福利姬萌白酱| 88xx成人永久免费观看| 免费av一区二区| 免费在线国产| 亚洲成人网在线| 久久久精品视频免费| 国产日韩欧美精品在线| 高清一区在线观看| 在线视频精品| 日韩精品在线中文字幕| 免费萌白酱国产一区二区三区| 国产精品人成电影| 波多野结衣亚洲| 午夜精品久久久99热福利| av免费在线网站| 色青青草原桃花久久综合| 国产又大又黄的视频| 色婷婷综合久久久中文一区二区| 在线观看福利片| 校园激情久久| 日韩精品一区二区三区色偷偷| 国产伦乱精品| 国产ts人妖一区二区三区| 国产激情视频在线播放| 亚洲一区二区欧美| 精品无码人妻一区| 不卡电影一区二区三区| 91蝌蚪视频在线观看| 日韩欧美不卡| 亚州欧美一区三区三区在线 | 亚洲最新无码中文字幕久久| 97国产在线视频| av免费不卡| 精品一区二区电影| 四虎在线免费观看| 欧美色视频在线| 国产一区二区视频在线观看免费| 中文字幕亚洲精品在线观看| 亚洲天堂精品一区| 高清久久久久久| 无码人妻一区二区三区精品视频| 国产成人在线视频播放| 国产深夜男女无套内射| 精品动漫3d一区二区三区免费| 日本一区高清不卡| 欧美日韩国产免费观看视频| 91丨九色丨国产| www.久久东京| 久久久久久久免费| 精品盗摄女厕tp美女嘘嘘| 亚洲欧美精品| 欧美/亚洲一区| 日韩av不卡播放| 日本欧美肥老太交大片| 伊人久久大香线蕉成人综合网| 国产精品香蕉| 久久国产欧美精品| 波多野结衣在线播放一区| 亚洲精品在线观看免费| 你懂的一区二区| 日韩av在线第一页| 免费精品视频在线| 中文字幕av一区二区三区人妻少妇 | 国产精品毛片aⅴ一区二区三区| 亚洲自拍偷拍一区| 激情小说亚洲色图| 成人福利视频网| 麻豆视频久久| 国产一区二区香蕉| 日韩精选视频| 亚洲伊人久久综合| 日韩系列在线| 一区二区三区四区视频在线| 国产精品欧美三级在线观看| 一区二区不卡在线视频 午夜欧美不卡'| 在线国产一区| 久久精品99国产| 在线日韩av| 日韩黄色片在线| 久久国产主播| 在线观看欧美一区二区| 久久精品亚洲麻豆av一区二区 | 亚洲一区二区成人| 手机免费看av网站| 日韩福利电影在线观看| 人妻精油按摩bd高清中文字幕| 91美女片黄在线观看91美女| 极品色av影院| 欧美性xxxx极品hd满灌| www.国产色| 欧美电影影音先锋| 精品无吗乱吗av国产爱色| 欧美精品少妇videofree| 国产精品高清乱码在线观看| 国产精品v欧美精品v日韩| 精品一区二区三区视频在线播放 | 日本中文字幕有码| 国内精品久久久久影院薰衣草| 日韩免费高清一区二区| 亚洲欧美在线高清| 亚洲色成人www永久网站| 精品国内二区三区| 特黄aaaaaaaaa真人毛片| 久久天堂电影网| 久久久久久久性潮| 欧美不卡福利| 色狮一区二区三区四区视频| 国产青青在线视频| 国产99久久久久久免费看农村| 超碰人人人人人人人| 精品一区二区三区毛片| 蜜桃av综合| 精品一区二区视频在线观看| 一区二区三区四区中文字幕| 中文字幕一区二区三区四区视频 | 亚洲综合在线播放| 国产精品99久久精品| 色多多视频在线播放| 亚洲人妖在线| av动漫一区二区| 又黄又爽的网站| 亚洲一级二级在线| 国产成人精品一区二三区四区五区| 在线播放日韩av| 国产黄色在线| 国产精品video| 九九久久电影| 日本精品一区二区三区四区| 97久久超碰精品国产| 国产福利拍拍拍| 色综合久久中文字幕综合网| 十八禁一区二区三区| 久久久噜久噜久久综合| 免费日韩电影| 欧美日韩一区二区三区在线观看免| 国产精品美女久久久浪潮软件| 成年人的黄色片| 欧美日韩亚洲高清| 你懂的免费在线观看视频网站| 57pao成人永久免费视频| 亚洲欧洲色图| 少妇性l交大片| 国产精品免费人成网站| 国产精品国产av| 欧美成人手机在线| 亚洲一区二区电影| 无码人妻丰满熟妇区96| 久久免费电影网| 中文字幕第99页| 久久久精品国产网站| 中文在线综合| 黄色www网站| 国产亚洲va综合人人澡精品| 一区二区视频免费| 久久在线视频在线| 成人动态视频| 国产免费人做人爱午夜视频| 国产激情视频一区二区三区欧美| 欧美激情一区二区视频| 在线视频你懂得一区| 国产香蕉在线观看| 久久久国产一区| 加勒比中文字幕精品| 国产免费人做人爱午夜视频| 国产精品久久免费看| 午夜精品久久久久久久91蜜桃| 97久久国产精品| 成人看的羞羞网站| 成人做爰69片免费| 欧美性色19p| av在线网址观看| 欧美大陆一区二区| 久久99精品国产91久久来源| 久久精品亚洲无码| 正在播放欧美一区| 国产精品丝袜在线播放| 污视频免费在线观看网站| 亚洲午夜久久久| 91大神xh98hx在线播放| 国产一区福利视频| 九九九久久久精品| 羞羞影院体验区| 久久五月天综合| 国产区精品区|