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

循序漸進學加密

安全 數據安全
上大學后,有幸聽盧開澄教授講《計算機密碼學》,才知道原來我們小時候玩的這個游戲遠遠不能稱之為加密。那么到底什么是加密呢?

還記得上初二的那年夏天,班里來了一個新同學,他就住在我家對面的樓里,于是我們一起上學放學,很快便成了最要好的朋友。我們決定發明一套神秘的溝通方式,任何人看到都不可能猜到它的真實含義。我們第一個想到的就是漢語拼音,但很顯然光把一個句子變成漢語拼音是不夠的,于是我們把26個英文字母用簡譜的方式從低音到高音排起來,就得到了一個簡單的密碼本:

把“我們都是好朋友”用這個密碼本變換之后就得到了這樣的結果:

小時候玩這個游戲樂此不疲,覺得非常有趣。上大學后,有幸聽盧開澄教授講《計算機密碼學》,才知道原來我們小時候玩的這個游戲遠遠不能稱之為加密。那么到底什么是加密呢?

什么是加密?

把字符串123456經過base64變換之后,得到了MTIzNDU2,有人說這是base64加密。

把字符串123456經過md5變換之后,得到了E10ADC3949BA59ABBE56E057F20F883E,有人說這是md5加密。

從嚴格意義上來說,不管是base64還是md5甚至更復雜一些的sha256都不能稱之為加密。

一句話,沒有密鑰的算法都不能叫加密。

  • 編碼(Encoding)是把字符集中的字符編碼為指定集合中某一對象(例如:比特模式、自然數序列、8位字節或者電脈沖),以便文本在計算機中存儲和通過通信網絡的傳遞的方法,常見的例子包括將拉丁字母表編碼成摩爾斯電碼和ASCII。base64只是一種編碼方式。
  • 雜湊(Hashing)是電腦科學中一種對資料的處理方法,通過某種特定的函數/算法(稱為雜湊函數/算法)將要檢索的項與用來檢索的索引(稱為雜湊,或者雜湊值)關聯起來,生成一種便于搜索的資料結構(稱為雜湊表)。雜湊算法常被用來保護存在資料庫中的密碼字符串,由于雜湊算法所計算出來的雜湊值具有不可逆(無法逆向演算回原本的數值)的性質,因此可有效的保護密碼。常用的雜湊算法包括md5, sha1, sha256等。
  • 加密(Encryption)是將明文信息改變為難以讀取的密文內容,使之不可讀的過程。只有擁有解密方法的對象,經由解密過程,才能將密文還原為正常可讀的內容。加密分為對稱加密和非對稱加密,對稱加密的常用算法包括DES, AES等,非對稱加密算法包括RSA,橢圓曲線算法等。

在古典加密算法當中,加密算法和密鑰都是不能公開的,一旦泄露就有被破解的風險,我們可以用詞頻推算等方法獲知明文。1972年美國IBM公司研制的DES算法(Data Encryption Standard)是人類歷史上第一個公開加密算法但不公開密鑰的加密方法,后來成為美國軍方和政府機構的標準加密算法。2002年升級成為AES算法(Advanced Encryption Standard),我們今天就從AES開始入手學習加密和解密。

準備工具

通常情況下,加解密都只需要在服務端完成就夠了,這也是網上大多數教程和樣例代碼的情況,但在某種特殊情況下,你需要用一種語言加密而用另一種語言解密的時候,最好有一個中立的公正的第三方結果集來驗證你的加密結果,否則一旦出錯,你都不知道是加密算法出錯了,還是解密算法出錯了,對此我們是有慘痛教訓的,特別是如果一個公司里,寫加密的是前端,用的是js語言,而寫解密的是后端,用的是java語言或者php語言或者go語言,則雙方更需要有這樣一個客觀公正的平臺,否則你們之間必然會陷入永無休止的互相指責的境地,前端說自己沒有錯,是后端解密解錯了,后端說解密沒有錯,是前端加密寫錯了,而事實上是雙方都是菜鳥,對密碼學一知半解,在這種情況下浪費的時間就更多。

在線AES加密解密就是這樣的一個工具網站,你可以在上面驗證你的加密結果,如果你加密得到的結果和它的結果完全一致,就說明你的加密算法沒有問題,否則你就去調整,直到和它的結果完全一致為止。反之亦然,如果它能從一個密文解密解出來,而你的代碼解不出來,那么一定是你的算法有問題,而不可能是數據的問題。

我們先在這個網站上對一個簡單的字符串123456進行加密。

下面我們對網站上的所有選項逐個解釋一下:

  • AES加密模式:這里我們選擇的是ECB(ee cc block)模式。這是AES所有模式中最簡單也是最不被人推薦的一種模式,因為它的固定的明文對應的是固定的密文,很容易被破解。但是既然是練習的話,就讓我們先從最簡單的開始。
  • 填充:在這里我們選擇pkcs標準的pkcs7padding。
  • 數據塊:我們選擇128位,因為java端解密算法目前只支持AES128,所以我們先從128位開始。
  • 密鑰:因為我們前面選擇了128位的數據塊,所以這里我們用128 / 8 = 16個字節來處理,我們先簡單地填入16個0,其實你也可以填寫任意字符,比如abcdefg1234567ab或者其它,只要是16個字節即可。理論上來說,不是16個字節也可以用來當密鑰,優秀的算法會自動補齊,但是為了簡單起見,我們先填入16個0。
  • 偏移量:置空。因為是ECB模式,不需要iv偏移量。
  • 輸出:我們選擇base64編碼方式。
  • 字符集:這里因為我們只加密英文字母和阿拉伯數字,所以選擇utf-8和gb2312都是一樣的。

好了,現在我們知道按照以上選項設置好之后的代碼如果加密123456的話,應該輸出DoxDHHOjfol/2WxpaXAXgQ==,如果不是這個結果,那就是加密端的問題。

AES-ECB

1. AES-ECB的Javascript加密

為了完成AES加密,我們并不需要自己手寫一個AES算法,不需要去重復造輪子。但如何選擇js的加密庫是個很有意思的挑戰。我們嘗試了很多方法,一開始我們嘗試了aes-js這個庫,但它不支持RSA算法,后來我們看到Web Crypto API這種瀏覽器自帶的加密庫,原生支持AES和RSA,但它的RSA實現和Java不兼容,最終我們還是選擇了Forge這個庫,它天生支持AES的各種子集,并且它的RSA也能和Java完美配合。

使用forge編寫的js代碼實現AES-ECB加密的代碼就是下面這些:

  1. const cipher = forge.cipher.createCipher('AES-ECB', '這里是16字節密鑰'); 
  2. cipher.start(); 
  3. cipher.update(forge.util.createBuffer('這里是明文')); 
  4. cipher.finish(); 
  5. const result = forge.util.encode64(cipher.output.getBytes()) 

forge的AES缺省就是pkcs7padding,所以不用特別設置。運行它之后你就會得到正確的加密結果。

2. AES-ECB的Java解密

接下來我們看看Java端的解密代碼該如何寫:

  1. try { 
  2.     Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); 
  3.     cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec("這里是16字節密鑰".getBytes(), "AES")); 
  4.     String plaintext = new String(cipher.doFinal(Base64.getDecoder().decode("這里是明文".getBytes())), "UTF-8"); 
  5.     System.out.println(plaintext); 
  6. } catch (Exception e) { 
  7.     System.out.println("解密出錯:" + e.toString()); 

注意這里我們用到的是PKCS5Padding,上面加密的時候不是用的是pkcs7padding嗎?怎么這里變成5了呢?

我們先來了解一下什么是pkcs。pkcs的全稱是Public Key Cryptography Standards(公鑰加密標準),這是RSA實驗室制定的一系列的公鑰密碼編譯標準,比較著名的有pkcs1, pkcs5, pkcs7, pkcs8這四個,它們分別管理的是不同的內容。在這里我們只是用它來填充,所以我們只關注pkcs5和pkcs7就夠了。那么pkcs5和pkcs7有什么區別呢?其實在填充方面它們兩個的算法是一樣的,pkcs5是pkcs7的一個子集,區別在于pkcs5是8字節固定的,而pkcs7可以是1到255之間的任意字節。但用在AES算法上,因為AES標準規定塊大小必須是16字節或者24字節或者32字節,不可能用pkcs5的8字節,所以AES算法只能用pkcs7填充。但是由于java早期工程師犯的一個命名上的錯誤,他們把AES填充算法的名稱設定為pkcs5,而實際實現中實現的是pkcs7,所以我們在java端開發解密的時候需要使用pkcs5。

AES-CBC

談完了不安全的AES-ECB,我們來做一下相對安全一些的AES-CBC模式。

1. AES-CBC的Javascript加密

直接上代碼:

  1. const cipher = forge.cipher.createCipher('AES-CBC', '這里是16字節密鑰'); 
  2. cipher.start({ iv: '這里是16字節偏移量' }); 
  3. cipher.update(forge.util.createBuffer('這里是明文')); 
  4. cipher.finish(); 
  5. const result = forge.util.encode64(cipher.output.getBytes()); 

跟上面的AES-ECB差不多,唯一區別只是在start函數里定義了一個iv。

2. AES-CBC的Java解密

下面是Java代碼:

  1. try { 
  2.     Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); 
  3.     cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec("這里是16字節密鑰".getBytes(), "AES"), new IvParameterSpec("這里是16字節偏移量".getBytes())); 
  4.     String plaintext = new String(cipher.doFinal(Base64.getDecoder().decode("這里是明文".getBytes())), "UTF-8"); 
  5.     System.out.println(plaintext); 
  6. } catch (Exception e) { 
  7.     System.out.println("解密出錯:" + e.toString()); 

也是同樣,跟上面用AES-ECB時的模式幾乎一模一樣,只是增加了一個IvParameterSpec,用來生成iv,在cipher.init里面增加了一個iv參數,除此之外完全相同,就這樣我們就已經實現了一個簡單的CBC模式。

RSA

但是以上兩種做法都明顯是非常不安全的,因為我們把加密用的密鑰和iv參數都直接暴露在了前端,為此我們需要一種更加安全的加密方法——RSA。因為RSA是非對稱加密,即使我們把加密用的公鑰完全暴露在前端也不必擔心,別人即使截獲了我們的密文,但因為他們沒有解密密鑰,是無法解出我們的明文的。

1. 生成密鑰對

要用RSA加密,首先我們需要生成一個公鑰和一個私鑰,我們可以直接執行命令ssh-keygen。它會問我們密鑰文件保存的文件夾,注意一定要單獨找一個文件夾存放,不要放在缺省文件夾下,否則你日常使用的ssh公鑰和私鑰就都被覆蓋了。

得到公鑰文件之后,由于這個公鑰文件是rfc4716格式的,而我們的forge庫要求一個pkcs1格式的公鑰,所以這里我們需要把它轉換成pem格式(也就是pkcs1格式):

  1. ssh-keygen -f 公鑰文件名 -m pem -e 

2. RSA的Javascript加密

得到pem格式的公鑰之后,我們來看一下js的代碼:

  1. forge.util.encode64(forge.pki.publicKeyFromPem('-----BEGIN RSA PUBLIC KEY-----MIIBCfdsafasfasfafsdaafdsaAB-----END RSA PUBLIC KEY-----').encrypt('這里是明文', 'RSA-OAEP', { md: forge.md.sha256.create(), mgf1: { md: forge.md.sha1.create() } }); 

一句話就完成整個加密過程了,這就是forge的強大之處。

3. RSA的Java解密

接下來我們看解密。

對于私鑰,因為Java只支持PKCS8,而我們用ssh-keygen生成的私鑰是pkcs1的,所以還需要用以下命令把pkcs1的私鑰轉換為pkcs8的私鑰:

  1. openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in 私鑰文件名 -out 導出文件名 

得到pkcs8格式的私鑰之后,我們把這個文件的頭和尾去掉,然后放入以下Java代碼:

  1. try { 
  2.     Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding"); 
  3.     cipher.init(Cipher.DECRYPT_MODE, KeyFactory.getInstance("RSA").generatePrivate(new PKCS8EncodedKeySpec(Base64.getDecoder().decode("這里是私鑰")))); 
  4.     String plaintext = new String(cipher.doFinal(Base64.getDecoder().decode("這里是密文".getBytes())), "UTF-8"); 
  5.     System.out.println(plaintext); 
  6. } catch (Exception e) { 
  7.     System.out.println("解密出錯:" + e.toString()); 

和上面的AES解密類似,只是增加了KeyFactory讀取PKCS8格式私鑰的部分,這樣我們就完成了Java端的RSA解密。

以上我們用最簡單的方式實現了js端加密,java端解密的過程,感興趣的朋友可以在這里下載完整的代碼親自驗證一下:

https://github.com/fengerzh/encdec

責任編輯:趙寧寧 來源: 日新亭
相關推薦

2011-05-20 10:39:43

oracle

2018-02-05 15:30:01

MariaDB服務器主從復制

2010-12-28 16:49:05

2010-01-06 16:40:30

cisco交換機vla

2012-03-01 22:37:02

Linux入門

2009-08-26 14:25:46

C#消息

2009-08-07 03:47:00

2011-05-24 13:47:25

程序員

2023-03-23 08:49:39

負載均衡服務器

2020-02-19 08:48:04

Java內存模型CPU

2009-10-30 14:43:24

寬帶接入網

2022-04-21 14:03:54

開發API生命周期

2010-12-31 15:28:41

Windows 7

2010-12-28 16:38:16

Windows SerWindows 部署服

2022-03-31 06:23:43

自動化響應網絡安全

2024-07-04 08:00:00

2022-04-29 11:27:26

循序漸進!開展零信任

2020-07-17 10:37:08

云計算安全IT

2020-11-23 11:09:18

大數據教育云計算

2013-12-03 09:57:15

下一代互聯網IPv6遷移
點贊
收藏

51CTO技術棧公眾號

欧美日本精品在线| 欧美日韩中文在线观看| 亚洲一区二区日本| 久草精品视频在线观看| 国产欧美日韩| 欧美精选在线播放| 久久久亚洲国产精品| 国产在线视频网| 国产精品原创巨作av| 欧美一区在线直播| 欧美精品久久久久久久久46p| jizz久久精品永久免费| 日本乱人伦一区| 免费观看黄色的网站| 亚洲人视频在线观看| 精品无码三级在线观看视频 | 欧美xxxxxbbbbb| 国产剧情av在线播放| 中文字幕在线观看不卡视频| 韩国一区二区三区美女美女秀| 国产天堂第一区| 日韩视频一区| 裸体女人亚洲精品一区| 久久久久久亚洲中文字幕无码| 日韩中文在线| 欧美四级电影网| 免费国产a级片| 中文字幕有码在线视频| 中文字幕欧美日本乱码一线二线| 国产成人免费电影| 在线免费观看高清视频| 亚洲深夜av| 久久久久久国产精品久久| 手机看片日韩av| 奇米影视777在线欧美电影观看| 欧美老女人在线| 国产欧美高清在线| 国产美女高潮在线观看| 亚洲精品免费在线播放| 亚洲三区视频| 国产精品视频一区二区久久| 99久久精品国产麻豆演员表| 岛国视频一区免费观看| 国产人妖一区二区| 久久国产精品无码网站| 国产成人在线一区| 精品国产xxx| 国产免费成人| 4k岛国日韩精品**专区| 日本少妇裸体做爰| 影音先锋一区| 精品少妇一区二区30p| 无码人妻精品中文字幕| 91免费精品| 在线国产精品视频| 国精产品视频一二二区| 国产精品99一区二区三| 深夜福利国产精品| 黄色精品视频在线观看| 国产精品久久久久一区二区三区厕所| 在线视频欧美日韩| 女人裸体性做爰全过| 国产精品久久久久久久久妇女 | 日本视频在线免费观看| 欧美激情一区二区三区不卡| 日韩偷拍一区二区| 国产黄色在线播放| 亚洲欧洲日韩一区二区三区| 国产成人三级视频| 在线免费av导航| 亚洲午夜久久久久久久久电影院| 久久久久久免费看| 亚洲免费福利| 欧美三片在线视频观看| 热久久久久久久久| 中文字幕一区日韩精品| 亚洲国产精品资源| 久久中文字幕人妻| 日产精品一区二区| 久久国产精彩视频| 99视频在线看| 青青草原综合久久大伊人精品优势 | 99热这里只有成人精品国产| 欧洲一区二区视频| 又色又爽又黄无遮挡的免费视频| 久久国产精品99精品国产| 波多野结衣成人在线| 日韩a在线观看| 国产精品无圣光一区二区| 最近免费观看高清韩国日本大全| 精灵使的剑舞无删减版在线观看| 欧美日韩国产精品一区二区三区四区| 国产视频一区二区视频| 久久亚洲精精品中文字幕| 日韩av影视综合网| 日日操免费视频| 狠狠入ady亚洲精品| 欧美最猛性xxxxx亚洲精品| 亚洲视频在线观看一区二区| 成人中文字幕在线| 欧美一区二区高清在线观看| 国产cdts系列另类在线观看| 亚洲国产精品自拍| 小泽玛利亚视频在线观看| 视频精品国内| 一本大道亚洲视频| 久久亚洲成人av| 男人操女人的视频在线观看欧美| 97人人干人人| av成人手机在线| 亚洲成年人影院| 中文字幕永久有效| 日韩高清影视在线观看| 精品久久久999| 成人av网站在线播放| 国产电影精品久久禁18| 三区精品视频| 麻豆免费在线| 欧美一区二区视频在线观看2020| 久久久久亚洲av无码专区桃色| 欧美激情一区| 国产日韩在线看片| 韩国中文免费在线视频| 午夜欧美视频在线观看 | 国产又黄又爽又色| 国产精品99久| 亚洲无玛一区| 日本欧美不卡| 日韩国产激情在线| 久久影院一区二区| 国产成人久久精品77777最新版本| 日韩电影免费观看高清完整| 中文在线аv在线| 亚洲成人精品视频| 九九视频在线观看| 国产毛片精品视频| 亚洲成人动漫在线| 555www色欧美视频| 日韩福利视频| 久久男人av资源站| 欧美电影免费观看完整版| 久久免费手机视频| 久久蜜桃精品| 久久久一本精品99久久精品| 欧美野外wwwxxx| 欧美一区二区三区视频在线| 亚洲一级理论片| 日本欧美一区二区三区乱码| 欧美日韩日本网| 这里有精品可以观看| 亚洲国产高潮在线观看| 久久久久久久黄色| 国产suv精品一区二区6| 99在线观看视频免费| 精品国产亚洲日本| 久久躁狠狠躁夜夜爽| 国产免费无遮挡| 伊人色综合久久天天人手人婷| 久久精品久久99| 91成人看片| 高清国产一区| 日韩欧美一中文字暮专区| 日韩成人av网址| 手机在线看片1024| 国产日产欧产精品推荐色 | 欧美精品电影| 欧美剧情片在线观看| 一区二区视频免费看| 国产成人精品一区二区三区四区| 亚洲天堂第一区| 亚洲曰韩产成在线| 欧美激情一区二区三区高清视频| 国产精品久久久久久久久毛片| 国产精品二区一区二区aⅴ污介绍| 在线观看免费视频高清游戏推荐| 婷婷久久国产对白刺激五月99| 91免费国产网站| 久久亚洲导航| 亚洲精品一区久久久久久| 中国女人一级一次看片| 亚洲色大成网站www久久九九| 午夜福利123| 亚洲成人中文| 神马影院午夜我不卡影院| 四虎在线精品| 欧美激情一二区| 免费国产在线观看| 69堂亚洲精品首页| 五月婷婷亚洲综合| 国产精品传媒入口麻豆| 成人午夜精品无码区| 久久综合图片| 成人午夜免费剧场| 久久99蜜桃| 91嫩草国产在线观看| 欲香欲色天天天综合和网| 丝袜一区二区三区| 少妇一区二区三区四区| 欧美区视频在线观看| 久久久一区二区三区四区| 久久久美女毛片| 日韩av福利在线观看| 亚洲尤物影院| 在线观看av的网址| 国产亚洲精品美女久久久久久久久久| 成人欧美一区二区三区在线| 热色播在线视频| 久久精品视频在线| 欧美拍拍视频| 日韩女优制服丝袜电影| 日韩精品在线一区二区三区| 亚洲主播在线观看| 免费一级suv好看的国产网站 | 99久久综合网| 日韩精品高清不卡| 国精产品一区一区三区视频| 99久久这里只有精品| 欧美成人综合一区| aiss精品大尺度系列| 国产日韩精品在线播放| 最新中文字幕在线播放| 欧美国产日韩免费| 黄色在线播放网站| 中文字幕国产亚洲| 四虎精品成人免费网站| 亚洲成人aaa| 国产情侣一区二区| 欧美日韩不卡视频| 午夜一区二区三区四区| 欧美视频在线免费| 中文字幕一区二区三区精品| 亚洲蜜臀av乱码久久精品 | 夜夜嗨av一区二区三区网页| 91麻豆制片厂| 久久免费看少妇高潮| 伦理片一区二区| 国产福利视频一区二区三区| 三区视频在线观看| 久久99日本精品| 亚洲欧美激情网| 石原莉奈在线亚洲三区| 人妻有码中文字幕| 99在线热播精品免费99热| 国产美女主播在线播放 | 国产精品进线69影院| 国产精品成人无码免费| 91蜜桃免费观看视频| 久久中文字幕人妻| 久久精品网站免费观看| 少妇光屁股影院| 91蝌蚪porny九色| 亚洲人人夜夜澡人人爽| 91免费观看视频| www在线观看免费视频| 91视频免费观看| 免费看污片网站| 中文字幕第一页久久| 美国一级黄色录像| 亚洲欧洲日韩一区二区三区| 日韩成人毛片视频| 亚洲国产精品久久人人爱蜜臀| 国产真实的和子乱拍在线观看| 亚洲专区一二三| av大片免费观看| 色噜噜久久综合| 一级黄色片免费看| 日韩欧美中文字幕公布| 亚洲精品久久久久avwww潮水| 精品国产麻豆免费人成网站| 五月婷婷深深爱| 亚洲图中文字幕| 国产在线更新| 久久久伊人日本| xxxxxx欧美| 国产免费成人av| 4438全国亚洲精品观看视频| 国产伦精品一区二区三| 伊人春色精品| 正在播放国产精品| 精品999日本| 激情内射人妻1区2区3区| 精品一区二区三区久久久| 超级砰砰砰97免费观看最新一期| 成人高清伦理免费影院在线观看| 少妇按摩一区二区三区| 国产精品美女www爽爽爽| 好吊色视频在线观看| 欧美午夜激情小视频| 91肉色超薄丝袜脚交一区二区| 精品国产免费一区二区三区四区| 国产在线视频你懂得| 久久91亚洲精品中文字幕| 中文字幕不卡三区视频| 91久久精品日日躁夜夜躁国产| 九九热hot精品视频在线播放| 日韩精品另类天天更新| 午夜国产一区| 成人3d动漫一区二区三区| 国产精品1区2区| 欧美人妻一区二区三区| 亚洲一区二区三区视频在线播放| 国产性生活视频| 日韩欧美的一区二区| 91se在线| 国内精品久久久久久久| 日韩欧美三区| 美国av一区二区三区| 你懂的成人av| 免费看污黄网站| 成人国产精品视频| 999精品视频在线观看播放| 狠狠综合久久av一区二区小说| 国产又粗又长视频| 国产亚洲精品一区二555| 久久99亚洲网美利坚合众国| 国产欧美精品va在线观看| 婷婷亚洲成人| 无码日本精品xxxxxxxxx| 蜜乳av一区二区| 久久久久亚洲av无码专区桃色| 亚洲一区二区在线播放相泽| 伊人精品一区二区三区| 亚洲女人被黑人巨大进入| 97天天综合网| 97免费高清电视剧观看| 99久久.com| 无限资源日本好片| 久久精品夜色噜噜亚洲a∨| 97免费在线观看视频| 欧美成人乱码一区二区三区| 黄色在线免费| 成人黄色在线播放| 成人精品影视| 日韩精品无码一区二区三区免费 | 日本成人午夜影院| 欧美日韩一区二区三区在线免费观看| 精品国产九九九| 久热在线中文字幕色999舞| 欧美天堂一区| 亚洲国产欧美一区二区三区不卡| 久久精品人人| 最近中文字幕免费| 欧美性三三影院| 国产黄色免费在线观看| 国产精品久久在线观看| 成人亚洲一区| 亚洲久久中文字幕| 国产精品高潮久久久久无| 中文在线字幕av| 伊人伊人伊人久久| 久久精品xxxxx| 正在播放亚洲| 国产98色在线|日韩| 久久这里只有精品免费| 亚洲国产精品久久精品怡红院| 国精产品一区一区三区mba下载| 超碰在线97av| 国产精品日韩精品欧美精品| 久久偷拍免费视频| 91国内精品野花午夜精品| 第一页在线观看| 91精品国产综合久久男男| 女人天堂亚洲aⅴ在线观看| 中文字幕永久免费| 午夜天堂影视香蕉久久| 极品白浆推特女神在线观看 | 亚洲熟女综合色一区二区三区| 亚洲欧美国产精品专区久久 | 欧美性大战久久久久久久| 97在线观看免费观看高清| 国产欧美亚洲精品| 一区二区三区四区电影| 人妻换人妻a片爽麻豆| 色噜噜狠狠色综合欧洲selulu| av片在线看| 99re资源| 国产精品综合色区在线观看| 国产精品久久久久久成人| 51久久夜色精品国产麻豆| 超碰97免费在线| 三区精品视频观看| 国产91精品久久久久久久网曝门| 国产成人免费观看视频| 综合网中文字幕| 9l亚洲国产成人精品一区二三| 日日摸天天爽天天爽视频| 国产精品卡一卡二| 国产91免费看| 国产精品久久久久久av下载红粉| 这里只有精品在线| www.超碰97| 在线播放国产精品二区一二区四区| 91精品久久| 欧美精品一区二区三区久久| 激情五月婷婷综合网| 日韩精品在线免费视频| 色偷偷噜噜噜亚洲男人的天堂| 欧美久久精品| 一级日本黄色片| 欧美在线不卡视频|