亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

詳解Java數(shù)字簽名提供XML安全

2019-11-26 09:42:51
字體:
供稿:網(wǎng)友

用Java數(shù)字簽名提供XML安全

眾所周知,XML在產(chǎn)品和項(xiàng)目開發(fā)中起著非常重要的作用。通過XML文檔可以獲取很多信息,還可以使用XML文件進(jìn)行CRUD(增加、查詢、更新和 刪除)操作。然而值得注意的是,我們?nèi)绾未_保XML中的數(shù)據(jù)是來自經(jīng)過認(rèn)證的可信和可靠的來源。關(guān)于XML文件數(shù)據(jù)的可靠性和真實(shí)性存在很多問題。通常的 情況是,開發(fā)者直接處理XML文件而不去考慮數(shù)據(jù)的可靠性。有一些情況提出了上面的所有問題。現(xiàn)實(shí)生活中,每當(dāng)我們從郵局收到一封信件時(shí)我們?nèi)绾未_定這封 信是來自我們的朋友?依據(jù)可能是他/她的習(xí)慣用語、用詞或者郵件詳細(xì)地址。也可能是他/她的個性簽名。如今,我們收到的信件可能被某人進(jìn)行了篡改,添加了 其他內(nèi)容。基于上述原因,通常我們會驗(yàn)證朋友的手寫簽名。當(dāng)然這些是關(guān)于來自郵局的普通郵件。電子消息又該如何?我們?nèi)绾悟?yàn)證電子消息的真實(shí)性?這種情況 我們會采用數(shù)字簽名。本文會對保證數(shù)據(jù)完整性的XML數(shù)字簽名技術(shù)進(jìn)行簡要介紹,并且展示如何為XML文件附加電子簽名及其驗(yàn)證過程。

使用的技術(shù)

過去幾年里,XML數(shù)字簽名取得了快速發(fā)展,在金融領(lǐng)域尤其如此。在開始討論之前,讓我們考慮一個典型場景:想象一下,某個組織將所有雇員的薪資內(nèi) 容用XML文件發(fā)送給所得稅部門。那么現(xiàn)在的問題是:所得稅部門如何驗(yàn)證這份XML文件?這就是說,IT部門需要驗(yàn)證該組織的敏感信息。IT部門需要確保 XML文件的來源可信,并且在IT部門收到之前沒有經(jīng)過篡改――也就是說文檔的內(nèi)容沒有在傳遞中被修改。首先,我們需要理解數(shù)字簽名的概念。數(shù)字簽名是一 種用來驗(yàn)證文檔發(fā)自可信方的電子簽名。它確保了文檔的原始內(nèi)容在傳輸中沒有受到修改。數(shù)字簽名可以用于任何加密和非加密消息,因此接收方可以識別發(fā)送者的 身份,并確認(rèn)消息沒有被其他人修改。根據(jù)維基百科的定義:“數(shù)字簽名是一種驗(yàn)證數(shù)字信息或文檔的數(shù)學(xué)方法”。一個有效的數(shù)字簽名可以讓接收者確認(rèn)收到的消 息來自已知發(fā)送方,發(fā)送者不能否認(rèn)自己發(fā)送了此消息(提供認(rèn)證和不可否認(rèn)性)并且此消息在傳輸中未經(jīng)修改(提供完整性)。數(shù)字簽名通常被用在軟件發(fā)布、金 融事務(wù)和其他需要檢測偽造或篡改的重要場合。

下面讓我們來看完整的一個帶有數(shù)字簽名的XML文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><SalaryDeposit>   <Organisation>     <Name>DDLab Inc</Name>     <AccountNo>SBC-12345789</AccountNo>   </Organisation>   <Employees>     <Emp>       <Name>John Abraham</Name>       <AccountNo>SB-001</AccountNo>       <Amount>1234</Amount>     </Emp>     <Emp>       <Name>Bipasha Basu</Name>       <AccountNo>SB-002</AccountNo>       <Amount>2334</Amount>     </Emp>     <Emp>       <Name>Vidya Balan</Name>       <AccountNo>SB-003</AccountNo>       <Amount>3465</Amount>     </Emp>     <Emp>       <Name>Debadatta Mishra</Name>       <AccountNo>SB-007</AccountNo>       <Amount>5789</Amount>     </Emp>     <Emp>       <Name>Priti Zinta</Name>       <AccountNo>SB-009</AccountNo>       <Amount>1234</Amount>     </Emp>   </Employees>   <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">     <SignedInfo>       <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>       <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>       <Reference URI="">        <Transforms>          <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>        </Transforms>        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>        <DigestValue>bHS+6uf8KbJV4AGzoHNHLfnXvKM=</DigestValue>       </Reference>     </SignedInfo>     <SignatureValue> aUEMrCT5dzeOfSNaznzoT0If8WZ8KQcMNXDqtoeseonVk3NqOk9ctcxrf3QVX3wP6810DDRPdI6l    e8ccG64Ge0HjkO+aYC5+c2L/qKBzwtSbl/olJEuFU2DVxBQO+K29TTUJfxpVzC9Zf2pvT+1NRj0f    2/ofHujYZ01D6+YqI8c=     </SignatureValue>     <KeyInfo>       <KeyValue>        <RSAKeyValue>          <Modulus> jfAd5uV38L36+lDZJrqfH9oLN86VJezXYfAeU+lrFoHlKAXVJLAi9hKvBHQRer4tPfdez6iSBKsl       6IHkPnVRAKt0xU99uxi5QpymsWAX3qnBqHlw9Z70PwyZ+Xysfw4Q2tK2HtSgUOhMuaUcIf9sbHvf       gbvcRPgxDZZqfIzDmDU=</Modulus>          <Exponent>AQAB</Exponent>        </RSAKeyValue>       </KeyValue>     </KeyInfo>   </Signature> </SalaryDeposit> 

上面是一個帶有簽名的XML文件,該文件可以隨時(shí)進(jìn)行驗(yàn)證。文件中包了含雇員名稱、帳號和薪資信息。然而,實(shí)際的數(shù)字簽名通 過<Signature></Signature>標(biāo)記進(jìn)行附加。<Signature> 標(biāo)記中的信息提供了文檔的真實(shí)性。正如你看到的那樣,雖然你可以隨意修改其中的數(shù)據(jù),但是這種修改會在隨后的簽名驗(yàn)證中被查到。
基本上數(shù)字簽名有三種類型:

  1. 封內(nèi)簽名
  2. 封外簽名
  3. 分離簽名

封內(nèi)簽名

這種簽名是將簽名作為XML對象的子信息,也就是說 <Signature>是郵件中XML文件的子標(biāo)簽。封內(nèi)數(shù)字簽名的結(jié)構(gòu)如下:

<RootElement>  <Signature>  ……  </Signature> </ RootElement> 

本文會介紹如何創(chuàng)建XML封內(nèi)數(shù)字簽名。

封外簽名

這種簽名將XML文檔包含到Signature對象,也就是說<Signature>標(biāo)簽是簽名XML文件的根元素。封外簽名結(jié)構(gòu)如下:

<Signature >   < MyXMLDocument >   ……   </ MyXMLDocument > </Signature> 

分離簽名

這種情況下,簽名是獨(dú)立生成的不作為XML的一部分。也就是說你會擁有兩個XML文件:一個待簽名的XML文件,另一個是XML簽名。下面是分離簽名的XML結(jié)構(gòu):

<Signature> …… </Signature> 

XML數(shù)字簽名文件結(jié)構(gòu)如下:

<Signature xmlns="">   <SignedInfo>     <CanonicalizationMethod Algorithm="" />     <SignatureMethod Algorithm="" />     <Reference URI="">       <Transforms>         <Transform Algorithm="" />         </Transforms>       <DigestMethod Algorithm="" />       <DigestValue></DigestValue>     </Reference>   </SignedInfo>   <SignatureValue></SignatureValue>   <KeyInfo>     <KeyValue>       <RSAKeyValue>         <Modulus></Modulus>         <Exponent></Exponent>       </RSAKeyValue>     </KeyValue>   </KeyInfo> </Signature> 

XML中<Signature>有3個子標(biāo)簽,結(jié)構(gòu)如下:

<Signature>   <SignedInfo></SignedInfo>   <SignatureValue></SignatureValue>   <KeyInfo></KeyInfo> </Signature> 

這里<Signature>是XML數(shù)字簽名的根元素,這一點(diǎn)由W3C建議并且必須遵守。<SignedInfo>元素是你的簽名信息;<SignatureValue>包含了實(shí)際的簽名以及使用Base64加密的內(nèi)容;最后<KeyInfo>表示公鑰。讓我們再看一下<SignedInfo>標(biāo)簽,結(jié)構(gòu)如下:

<SignedInfo>   <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>   <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>   <Reference URI="">     <Transforms>       <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>     </Transforms>     <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>     <DigestValue>bHS+6uf8KbJV4AGzoHNHLfnXvKM=</DigestValue>   </Reference> </SignedInfo> 

當(dāng)使用Java創(chuàng)建XML數(shù)字簽名時(shí),SignedInfo對象被用來在數(shù)字簽名的Signature標(biāo)簽內(nèi)創(chuàng)建元素。這也是W3C建議的XML簽名標(biāo)準(zhǔn)中的一部分。

XML標(biāo)簽<KeyInfo>的結(jié)構(gòu)如下:

<KeyInfo>   <KeyValue>     <RSAKeyValue>       <Modulus></Modulus>       <Exponent></Exponent>     </RSAKeyValue>   </KeyValue> </KeyInfo> 

KeyInfo>標(biāo)記包含了需要數(shù)學(xué)計(jì)算的相關(guān)信息,主要有公鑰的系數(shù)和指數(shù)。
要創(chuàng)建XML數(shù)字簽名可以遵循下列步驟:

  1. 生成一組私鑰和公鑰。
  2. 獲得原始XML文件。
  3. 通過Java API使用私鑰和公鑰為原始的XML文件簽名,生成帶有XML簽名的文檔。

讓我們看看使用Java生成XML簽名的相關(guān)代碼:

public void generateXMLDigitalSignature(String originalXmlFilePath, String destnSignedXmlFilePath, String privateKeyFilePath, String publicKeyFilePath) {   // 獲取XML文檔對象   Document doc = getXmlDocument(originalXmlFilePath);     // 創(chuàng)建XML簽名工廠   XMLSignatureFactory xmlSigFactory = XMLSignatureFactory.getInstance("DOM");   PrivateKey privateKey = new KryptoUtil().getStoredPrivateKey(privateKeyFilePath);   DOMSignContext domSignCtx = new DOMSignContext(privateKey, doc.getDocumentElement());   Reference ref = null;   SignedInfo signedInfo = null;   try {     ref = xmlSigFactory.newReference("", xmlSigFactory.newDigestMethod(DigestMethod.SHA1, null),     Collections.singletonList(xmlSigFactory.newTransform(Transform.ENVELOPED,     (TransformParameterSpec) null)), null, null);     signedInfo = xmlSigFactory.newSignedInfo(     xmlSigFactory.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE,     (C14NMethodParameterSpec) null),     xmlSigFactory.newSignatureMethod(SignatureMethod.RSA_SHA1, null),     Collections.singletonList(ref));   } catch (NoSuchAlgorithmException ex) {     ex.printStackTrace();   } catch (InvalidAlgorithmParameterException ex) {     ex.printStackTrace();   }     // 傳入公鑰路徑   KeyInfo keyInfo = getKeyInfo(xmlSigFactory, publicKeyFilePath);     // 創(chuàng)建新的XML簽名   XMLSignature xmlSignature = xmlSigFactory.newXMLSignature(signedInfo, keyInfo);   try {     // 對文檔簽名     xmlSignature.sign(domSignCtx);   } catch (MarshalException ex) {     ex.printStackTrace();   } catch (XMLSignatureException ex) {     ex.printStackTrace();   }     // 存儲簽名過的文檔   storeSignedDoc(doc, destnSignedXmlFilePath); } 

XML簽名驗(yàn)證

數(shù)字簽名的驗(yàn)證包含以下操作:

驗(yàn)證數(shù)字簽名

  • 計(jì)算<SignedInfo>元素摘要。
  • 使用公鑰解密<SignatureValue>元素。
  • 比較上面兩個值。
  • 計(jì)算引用摘要
  • 重新計(jì)算<SignedInfo>元素引用摘要。
  • 將它們與<DigestValue>中的摘要比較。

為了驗(yàn)證XML簽名文檔,需要完成下列步驟

  1. 得到XML文檔和公鑰。
  2. 驗(yàn)證<SignedInfo> 元素的數(shù)字簽名。
  3. 計(jì)算<SignedInfo> 元素的摘要并對值進(jìn)行比較。

讓我們看看下面這段XML數(shù)字簽名示例代碼:

public static boolean isXmlDigitalSignatureValid(String signedXmlFilePath, String pubicKeyFilePath) throws Exception {   boolean validFlag = false;   Document doc = getXmlDocument(signedXmlFilePath);   NodeList nl = doc.getElementsByTagNameNS(XMLSignature.XMLNS, "Signature");   if (nl.getLength() == 0) {     throw new Exception("No XML Digital Signature Found, document is discarded");   }     PublicKey publicKey = new KryptoUtil().getStoredPublicKey(pubicKeyFilePath);   DOMValidateContext valContext = new DOMValidateContext(publicKey, nl.item(0));   XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM");   XMLSignature signature = fac.unmarshalXMLSignature(valContext);   validFlag = signature.validate(valContext);   return validFlag; } 

如上面示例代碼所示,XML簽名可以通過重新計(jì)算<SignedInfo>的摘要值進(jìn)行驗(yàn)證,驗(yàn)證算法由 <SignatureMethod>元素指定;使用公鑰可以驗(yàn)證<SignedInfo>摘要中 的<SignatureValue>值是否正確。 引用摘要會在<SignedInfo>元素中重新計(jì)算,并與<Reference> 元素中對應(yīng)的<DigestValue> 進(jìn)行比對。接下來,讓我們熟悉一下XML數(shù)字簽名相關(guān)的Java組件。

XMLSignatureFactory

XMLSignatureFactory是生成XML文檔數(shù)字簽名的工廠對象。對象的創(chuàng)建如下列代碼所示:

XMLSignatureFactory factory = XMLSignatureFactory.getInstance("DOM"); 

DOMSignContext

DOMSignContext對象用來生成DOM樹。在創(chuàng)建數(shù)字簽名的過程中,DOM樹會被附上XML數(shù)字簽名。DOMSignContext對象要求輸入私鑰和XML文檔的根元素。

Reference

Reference對象用來在Signature 標(biāo)記的SignedInfo內(nèi)部創(chuàng)建XML數(shù)字簽名。對象創(chuàng)建的遵循“W3C XML簽名文法和處理”規(guī)則。Reference的基本結(jié)構(gòu)如下:

<Reference URI="">   <Transforms>   <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>   </Transforms>   <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>   <DigestValue>bHS+6uf8KbJV4AGzoHNHLfnXvKM=</DigestValue> </Reference> 

SignedInfo

類似的,SignedInfo對象可以在數(shù)字簽名的Signature標(biāo)記內(nèi)部創(chuàng)建元素。創(chuàng)建的規(guī)則同樣遵循“W3C XML數(shù)字簽名協(xié)議”。SignedInfo的基本結(jié)構(gòu)如下:

<SignedInfo>   <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>   <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>   <Reference URI="">     <Transforms>     <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>     </Transforms>     <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>     <DigestValue>bHS+6uf8KbJV4AGzoHNHLfnXvKM=</DigestValue>   </Reference> </SignedInfo> 

XMLSignature

最后,XMLSignature對象用來創(chuàng)建XML文檔的封面簽名。按照W3C的建議,簽名對象應(yīng)該作為XML數(shù)字簽名的根元素。
完整的結(jié)構(gòu)如下:

<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">   <SignedInfo>     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>     <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>     <Reference URI="">       <Transforms>       <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>       </Transforms>       <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>       <DigestValue>bHS+6uf8KbJV4AGzoHNHLfnXvKM=</DigestValue>     </Reference>   </SignedInfo>   <SignatureValue>aUEMrCT5dzeOfSNaznzoT0If8WZ8KQcMNXDqtoeseonVk3NqOk9ctcxrf3QVX3wP6810DDRPdI6l   e8ccG64Ge0HjkO+aYC5+c2L/qKBzwtSbl/olJEuFU2DVxBQO+K29TTUJfxpVzC9Zf2pvT+1NRj0f   2/ofHujYZ01D6+YqI8c=</SignatureValue>   <KeyInfo>     <KeyValue>     <RSAKeyValue>       <Modulus>jfAd5uV38L36+lDZJrqfH9oLN86VJezXYfAeU+lrFoHlKAXVJLAi9hKvBHQRer4tPfdez6iSBKsl       6IHkPnVRAKt0xU99uxi5QpymsWAX3qnBqHlw9Z70PwyZ+Xysfw4Q2tK2HtSgUOhMuaUcIf9sbHvf       gbvcRPgxDZZqfIzDmDU=</Modulus>       <Exponent>AQAB</Exponent>     </RSAKeyValue>     </KeyValue>   </KeyInfo> </Signature> 

為了有一個完成的理解,可以從這里下載完整的Netbeans項(xiàng)目代碼。

可以用你最喜歡的Java IDE對項(xiàng)目進(jìn)行配置;也可以在source文件夾下運(yùn)行程序。這個項(xiàng)目已經(jīng)包含了公鑰和私鑰。如果想要自己生成,可以運(yùn)行 “TestGenerateKeys”類生成一對公鑰和私鑰。通過指定自己的XMI文件,還可以查看XML簽名的生成過程。

以上就是本次我們給大家整理的內(nèi)容的全部,感謝大家對武林網(wǎng)的支持,如果大家還有不明白的可以在下方留言區(qū)討論。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
婷婷中文字幕一区| 免费国产在线观看| 亚洲一区二区三区四区五区xx| 亚洲人成伊人成综合图片| 日本欧美黄色片| 久久久国产高清| 久久久国产在线视频| xxxxxx国产精品视频| 十八禁一区二区三区| 久久综合图区亚洲综合图区| 日韩精品一区不卡| 成人看片黄a免费看在线| 北条麻妃一二三区| 欧美v日韩v国产v| 国产农村妇女毛片精品久久莱园子| 麻豆一区二区三区视频| 免费在线观看av片| 一级片avav网址| 成人eeuss影院在线观看| 日本黄色入口| 日本人妖在线| 色哟哟在线观看一区二区三区| 亚洲一二三四区| 丝袜亚洲精品中文字幕一区| 日韩美女一区二区三区| 黄色免费福利视频| 欧美精品激情在线| 国产精品久久久久久久久久白浆| 欧美精品久久一区| 精品黑人一区二区三区在线观看| 久久看人人爽人人| 中文字幕在线观看免费高清| 亚洲黄色免费| 日韩欧美成人午夜| 九九热这里只有精品6| 久久噜噜色综合一区二区| 精品人妻一区二区乱码| 亚洲奶大毛多的老太婆| 最新av免费在线观看| 亚洲久久久久久久久久| 日韩欧美在线视频播放| 素人啪啪色综合| 国产精品久久久久一区二区国产| 福利电影在线| 成人免费看视频网站| 亚洲另类在线制服丝袜| 久久精品国产亚洲av香蕉| 久久99精品久久久久久园产越南| 成人性生交大片免费看中文视频| 亚洲图片另类小说| 国产精品影院在线| 天天操中文字幕视频| 久久大胆人体视频| 日韩av综合网| 国产精品毛片一区二区在线看舒淇| 欧美成人视屏| 日本久久精品电影| 在线日韩成人| 成人国产激情| 夜鲁很鲁在线视频| 亚洲国产成人精品激情在线| 国产精品一区二区美女视频免费看| 日本视频在线观看一区二区三区| 51精品国产人成在线观看| 久久午夜激情| 国产精品视频yy9099| 国产69久久精品成人| 鲁一鲁一鲁一鲁一av| 豆国产97在线|亚洲| 国产内射老熟女aaaa∵| 亚洲少妇一区二区| 人妻少妇被粗大爽9797pw| 国产一区二区三区在线观看免费| 亚洲精品女人| 羞羞在线视频| 偷偷www综合久久久久久久| 欧美精品一区二区三区在线四季| 免费在线超碰| 日韩影院二区| 不卡一区2区| 久久精品视频一| 欧美日韩视频专区在线播放| 自拍网站在线观看| 久久香蕉精品视频| 6080yy午夜一二三区久久| 国产一卡二卡在线| 国产粉嫩在线观看| 国产不卡在线播放| 国产一区在线精品| 国产又粗又猛又爽又黄的视频四季| 男女18免费网站视频| www.在线视频| 国产在线日韩精品| 91久色porny| 国产97在线播放| 色啦啦av综合| 久久尤物电影视频在线观看| 国产网红主播福利一区二区| 全亚洲第一av番号网站| 亚洲第一区中文字幕| 欧美亚洲高清一区二区三区不卡| 久久精品免费一区二区三区| 免费网站观看www在线观看| 亚洲精品国产精品国自| 在线成人免费| 91视频这里只有精品| 免费观看成人毛片| 中文字幕无码精品亚洲35| 久久亚洲AV成人无码国产野外| 国产精品午夜一区二区三区| 国产aaa一级片| 伊人久久中文字幕| 亚洲精品一区二区三区蜜桃久| 久草电影在线| 欧美黄网站色视频| 粗暴91大变态调教| 一区二区不卡在线播放| 久久精品凹凸全集| 国内精品久久久久久久久蜜桃| 国产精品白丝jk喷水视频一区| 国产一区视频免费观看| 男人在线观看视频| 久久久.com| 韩日在线播放| 欧美美女搞黄| 最新欧美人z0oozo0| 国产极品一区二区三区| 精品国产精品一区二区夜夜嗨| 色xxx在线播放| 欧美日韩一区二区免费在线观看| 日本视频中文字幕一区二区三区| 中文字幕佐山爱一区二区免费| 真实国产乱子伦精品一区二区三区| 先锋影音av资源在线| 永久免费在线观看视频| 亚洲精品日韩激情在线电影| 国产成人精品一区二区三区| 日本一二区不卡| 美女高潮久久久| 影音先锋男人资源站在线观看| 国产福利电影在线观看| 精品国内自产拍在线观看| 国产一区二区激情| 成熟老妇女视频| 国产一区久久久| 欧美偷拍一区二区三区| 在线天堂中文字幕| 一级黄色免费| 黄色网免费看| 日本在线中文字幕一区二区三区| 91精品国产毛片武则天| 久久成年人网站| 欧美白人最猛性xxxxx| 一区二区三区|亚洲午夜| 在线免费一区| 国语自产精品视频在线看一大j8| 在线精品视频免费观看| 黄网站免费观看| 日韩在线www| 国内精品久久久久久久97牛牛| 精品成人久久| 日韩欧美电影| 欧美福利在线播放| 亚洲国产中文字幕在线| 欧美日韩精品在线| 中文字幕资源在线观看| 人妻视频一区二区三区| 精品成人av一区| av在线你懂的| 一卡二卡三卡四卡五卡| 在线亚洲人成电影网站色www| 亚洲国产精品视频一区| 99九九久久| 欧美激情在线看| 国产999精品久久久久久| 制服丝袜第一页在线观看| 奇米亚洲午夜久久精品| 国产一级片免费| 一本到不卡精品视频在线观看| 一区二区美女| 和岳每晚弄的高潮嗷嗷叫视频| 欧洲av无码放荡人妇网站| 99re8这里有精品热视频8在线| 成人国产精品久久久网站| 亚洲bt欧美bt精品777| 2020日本不卡一区二区视频| 国产剧情久久久久久| 欧美区在线观看| 青草影视电视剧免费播放在线观看| 日本一级一片免费视频| 亚洲三级在线播放| 91啦中文成人| 久久久免费精品| 1069男同网址| 免费电影网站在线视频观看福利| 国精产品一区一区三区mba下载| 精品国产91久久久久久老师| 里番全彩acg☆无翼乌全彩3d| 天天在线免费视频| 日批视频免费看| 欧美日韩免费在线| 噜噜噜噜噜久久久久久91| 一区二区欧美在线观看| heyzo在线观看| 中文字幕在线观看视频免费| 91精品国产综合久久精品| 久久久亚洲精品一区二区三区| 国产精品久久久精品| 亚洲午夜电影在线| 国产日韩精品一区二区| 午夜福利视频一区二区| 尤物网站在线观看| 久久这里有精品| 欧美电影影音先锋| 欧美下载看逼逼| 日本五十路女优| 头脑特工队2免费完整版在线观看| 日韩国产高清一区| 欧美成人免费视频| 26uuu久久天堂性欧美| 亚洲影视第一页| 久久久精品中文字幕麻豆发布| 欧美日韩1区2区3区| 欧洲一区二区日韩在线视频观看免费| 亚洲精品国产欧美在线观看| 自拍在线观看| 一区二区三区欧美亚洲| 韩日中文字幕| 精品一区二区三区免费毛片爱| 日本高清久久一区二区三区| 欧美video巨大粗暴18| 九九热视频在线免费观看| 97se亚洲综合| 亚洲精选久久| 一本色道久久综合狠狠躁的番外| 成人国产在线视频| 国产99久久久精品| 日本不卡免费新一二三区| 青春草免费在线视频| 加勒比海盗1在线观看免费国语版| 鲁一鲁一鲁一鲁一澡| 国产91丝袜美女在线播放| 麻豆av在线播放| 国产精品美女久久久久aⅴ国产馆| 亚洲精品国产一区二区在线| 三级全黄的视频在线观看| 宅男午夜在线| 91天堂素人约啪| 国产亚洲女人久久久久毛片| 久久6精品影院| 久久久久国产精品无码免费看| 亚洲 激情 在线| 尤物视频在线免费观看| 国产porn视频| 婷婷成人综合网| 日韩三级在线免费观看| 国产精品欧美一区二区| 人人狠狠综合久久亚洲婷婷| 亚洲综合成人婷婷小说| 调教视频在线观看| 国产精品综合久久久久久| 国产毛片一区二区三区| 在线观看国产区| 亚洲一区免费视频| 中文字幕日韩av资源站| 亚洲色图都市激情| 成年人视频软件| 欧美日韩性视频在线| 首页欧美精品中文字幕| 欧美午夜精品在线| 日韩av在线影院| 最近2019年好看中文字幕视频| 欧美国产一区二区三区激情无套| 国产女主播喷水高潮网红在线| 亚洲午夜精品久久久久久浪潮| 丰满亚洲少妇av| 国产成人无码www免费视频播放| 日本一级在线观看| 先锋影音男人站| 91免费电影网站| japanese色系久久精品| 一本色道a无线码一区v| 色呦呦在线观看视频| 三上悠亚一区| 亚洲国产黄色| 丁香花在线电影小说观看| 日韩精品一区二区三区在线视频| 中文有码在线观看| 老鸭窝91久久精品色噜噜导演| 精品国产无码在线| 好吊色一区二区三区| 亚洲天天做日日做天天谢日日欢| 亚洲爽爆av| 亚洲日本电影| 成+人+亚洲+综合天堂| 国产精品无码毛片| 深夜国产在线播放| 欧美精品七区| 少妇高潮一69aⅹ| 精品国产一区二区亚洲人成毛片| 最新av在线| 国产真人做爰毛片视频直播| 一区视频免费观看| 国产日韩欧美在线一区| 久久久99免费| 久久国产精品免费观看| 国产jjizz一区二区三区视频| av资源中文在线天堂| 91在线三级| 日韩激情综合网| 99鲁鲁精品一区二区三区| 日本黄色三级视频| 在线看片黄色| 精品久久久一区二区| 国产人妖一区| 夜夜嗨aⅴ一区二区三区| 一区二区三区网址| 色哟哟入口国产精品| 中文字幕+乱码+中文乱码www| 欧美hdxxxx| 狠狠躁日日躁夜夜躁av| 99精品免费观看| 99久久精品国产一区二区小说| 日本精品视频在线播放| 精品免费av| 综合免费一区二区三区| 国产精品3区| 小小女视频网站色琼网站|