久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

詳解c#與js的rsa加密互通

瀏覽:197日期:2024-04-02 17:38:07
ASN.1

抽象語法表示(標(biāo)記)ASN.1(Abstract Syntax Notation One )一種數(shù)據(jù)定義語言,描述了對(duì)數(shù)據(jù)進(jìn)行表示、編碼、傳輸和解碼的數(shù)據(jù)格式。網(wǎng)絡(luò)管理系統(tǒng)中的管理信息庫(MIB)、應(yīng)用程序的數(shù)據(jù)結(jié)構(gòu)、協(xié)議數(shù)據(jù)單元(PDU)都是用ASN.1定義的。

可以理解為ASN.1是對(duì)密鑰結(jié)構(gòu)定義的一種規(guī)范

密鑰結(jié)構(gòu)類型PKCS#1

RSAPublicKey ::= SEQUENCE { modulus INTEGER, -- n publicExponent INTEGER -- e}RSAPrivateKey ::= SEQUENCE { version Version, modulus INTEGER, -- n publicExponent INTEGER, -- e privateExponent INTEGER, -- d prime1 INTEGER, -- p prime2 INTEGER, -- q exponent1 INTEGER, -- d mod (p-1) exponent2 INTEGER, -- d mod (q-1) coefficient INTEGER, -- (inverse of q) mod p otherPrimeInfos OtherPrimeInfos OPTIONAL}PKCS#8

PublicKeyInfo ::= SEQUENCE { algorithm AlgorithmIdentifier, PublicKey BIT STRING ; 其中的BIT STRING是某個(gè)算法自己指定的二進(jìn)制格式 ; RSA算法的話,就是上面的RSAPublicKey}AlgorithmIdentifier ::= SEQUENCE { algorithm OBJECT IDENTIFIER, parameters ANY DEFINED BY algorithm OPTIONAL}PrivateKeyInfo ::= SEQUENCE { version Version, algorithm AlgorithmIdentifier, PrivateKey BIT STRING}AlgorithmIdentifier ::= SEQUENCE { algorithm OBJECT IDENTIFIER, parameters ANY DEFINED BY algorithm OPTIONAL}密鑰編碼類型der格式

二進(jìn)制格式

pem格式

把der格式的數(shù)據(jù)用base64編碼后,然后再在頭尾加上一段“-----”開始的標(biāo)記

證書類型X.509證書

X.509只包含公鑰,沒有私鑰,這種證書一般公開發(fā)布,可用于放在客服端使用,用于加密、驗(yàn)簽

PKCS#12證書

因?yàn)閄.509證書只包含公鑰,但有些時(shí)候我們需要把私鑰和公鑰合并成一個(gè)證書,放在服務(wù)端使用,用于解密、簽名。

PKCS#12就定義了這樣一種證書,它既包含了公鑰有包含了私鑰。典型的入pfx、p12證書就是PKCS#12證書。

PKCS#7證書

當(dāng)你收到一個(gè)網(wǎng)站的證書后,你需要驗(yàn)證其真實(shí)性。因?yàn)橐粋€(gè)X.509證書包含了公鑰、持有人信息、簽名。為了驗(yàn)證其真實(shí)性,你需要簽證其簽名,而驗(yàn)證簽名則需要簽發(fā)的CA機(jī)構(gòu)的公鑰證書。同樣原理,當(dāng)你拿到CA機(jī)構(gòu)的公鑰證書后,你也需要驗(yàn)證該CA機(jī)構(gòu)的真實(shí)性,而驗(yàn)證該CA機(jī)構(gòu)的證書,你需要該CA上級(jí)機(jī)構(gòu)的CA公鑰證書...以此類推,你需要一直驗(yàn)證到根證書為止。所以為了驗(yàn)證一個(gè)網(wǎng)站證書的真實(shí)性,你需要的不僅一張證書,而是一個(gè)證書鏈。而PKCS#7就定義了這樣一個(gè)證書鏈的類型結(jié)構(gòu)。典型如p7b后綴名的證書就是這樣的格式。

證書后綴

.cer/.crt:存放公鑰,沒有私鑰,就是一個(gè)X.509證書,二進(jìn)制形式存放

.pfx/.p12:存放公鑰和私鑰,通常包含保護(hù)密碼,二進(jìn)制方式

證書與密鑰關(guān)系

數(shù)字證書和私鑰是匹配的關(guān)系。就好比鑰匙牌和鑰匙的關(guān)系。在數(shù)字證書簽發(fā)的時(shí)候,數(shù)字證書簽發(fā)系統(tǒng)(CA系統(tǒng)),在生成數(shù)字證書的同時(shí),還會(huì)隨機(jī)生成一對(duì)密鑰,一個(gè)私鑰,一個(gè)公鑰。數(shù)字證書標(biāo)示用戶身份, 相匹配的私鑰和公鑰,則是用來保障用戶身份的可認(rèn)證性。就好比咱們拿著一串鑰匙,每個(gè)鑰匙上都標(biāo)明有時(shí)某某房間的鑰匙,但是否是真的,還需要看能不能打開相應(yīng)的房門。

密鑰生成

/// <summary> /// 取得私鑰和公鑰 XML 格式,返回?cái)?shù)組第一個(gè)是私鑰,第二個(gè)是公鑰. /// </summary> /// <param name='size'>密鑰長度,默認(rèn)1024,可以為2048</param> /// <returns></returns> public static string[] CreateXmlKey(int size = 1024) { //密鑰格式要生成pkcs#1格式的 而不是pkcs#8格式的 RSACryptoServiceProvider sp = new RSACryptoServiceProvider(size); string privateKey = sp.ToXmlString(true);//private key string publicKey = sp.ToXmlString(false);//public key return new string[] { privateKey, publicKey }; } /// <summary> /// 取得私鑰和公鑰 CspBlob 格式,返回?cái)?shù)組第一個(gè)是私鑰,第二個(gè)是公鑰. /// </summary> /// <param name='size'></param> /// <returns></returns> public static string[] CreateCspBlobKey(int size = 1024) { //密鑰格式要生成pkcs#1格式的 而不是pkcs#8格式的 RSACryptoServiceProvider sp = new RSACryptoServiceProvider(size); string privateKey = System.Convert.ToBase64String(sp.ExportCspBlob(true));//private key string publicKey = System.Convert.ToBase64String(sp.ExportCspBlob(false));//public key return new string[] { privateKey, publicKey }; } /// <summary> /// 導(dǎo)出PEM PKCS#1格式密鑰對(duì),返回?cái)?shù)組第一個(gè)是私鑰,第二個(gè)是公鑰. /// </summary> public static string[] CreateKey_PEM_PKCS1(int size = 1024) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(size); string privateKey = RSA_PEM.ToPEM(rsa, false, false); string publicKey = RSA_PEM.ToPEM(rsa, true, false); return new string[] { privateKey, publicKey }; } /// <summary> /// 導(dǎo)出PEM PKCS#8格式密鑰對(duì),返回?cái)?shù)組第一個(gè)是私鑰,第二個(gè)是公鑰. /// </summary> public static string[] CreateKey_PEM_PKCS8(int size = 1024, bool convertToPublic = false) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(size); string privateKey = RSA_PEM.ToPEM(rsa, false, true); string publicKey = RSA_PEM.ToPEM(rsa, true, true); return new string[] { privateKey, publicKey }; }后端加/解密方法使用

/// <summary> /// RSA加密 /// </summary> /// <param name='Data'>原文</param> /// <param name='PublicKeyString'>公鑰</param> /// <param name='KeyType'>密鑰類型XML/PEM</param> /// <returns></returns> public static string RSAEncrypt(string Data,string PublicKeyString,string KeyType) { byte[] data = Encoding.GetEncoding('UTF-8').GetBytes(Data); RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); switch (KeyType) {case 'XML': rsa.FromXmlString(PublicKeyString); break;case 'PEM': rsa = RSA_PEM.FromPEM(PublicKeyString); break;default: throw new Exception('不支持的密鑰類型'); } //加密塊最大長度限制,如果加密數(shù)據(jù)的長度超過 秘鑰長度/8-11,會(huì)引發(fā)長度不正確的異常,所以進(jìn)行數(shù)據(jù)的分塊加密 int MaxBlockSize = rsa.KeySize / 8 - 11; //正常長度 if (data.Length <= MaxBlockSize) {byte[] hashvalueEcy = rsa.Encrypt(data, false); //加密return System.Convert.ToBase64String(hashvalueEcy); } //長度超過正常值 else {using (MemoryStream PlaiStream = new MemoryStream(data))using (MemoryStream CrypStream = new MemoryStream()){ Byte[] Buffer = new Byte[MaxBlockSize]; int BlockSize = PlaiStream.Read(Buffer, 0, MaxBlockSize); while (BlockSize > 0) { Byte[] ToEncrypt = new Byte[BlockSize]; Array.Copy(Buffer, 0, ToEncrypt, 0, BlockSize); Byte[] Cryptograph = rsa.Encrypt(ToEncrypt, false); CrypStream.Write(Cryptograph, 0, Cryptograph.Length); BlockSize = PlaiStream.Read(Buffer, 0, MaxBlockSize); } return System.Convert.ToBase64String(CrypStream.ToArray(), Base64FormattingOptions.None);} } } /// <summary> /// RSA解密 /// </summary> /// <param name='Data'>密文</param> /// <param name='PrivateKeyString'>私鑰</param> /// <param name='KeyType'>密鑰類型XML/PEM</param> /// <returns></returns> public static string RSADecrypt(string Data,string PrivateKeyString, string KeyType) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); switch (KeyType) {case 'XML': rsa.FromXmlString(PrivateKeyString); break;case 'PEM': rsa = RSA_PEM.FromPEM(PrivateKeyString); break;default: throw new Exception('不支持的密鑰類型'); } int MaxBlockSize = rsa.KeySize / 8; //解密塊最大長度限制 //正常解密 if (Data.Length <= MaxBlockSize) {byte[] hashvalueDcy = rsa.Decrypt(System.Convert.FromBase64String(Data), false);//解密return Encoding.GetEncoding('UTF-8').GetString(hashvalueDcy); } //分段解密 else {using (MemoryStream CrypStream = new MemoryStream(System.Convert.FromBase64String(Data)))using (MemoryStream PlaiStream = new MemoryStream()){ Byte[] Buffer = new Byte[MaxBlockSize]; int BlockSize = CrypStream.Read(Buffer, 0, MaxBlockSize); while (BlockSize > 0) { Byte[] ToDecrypt = new Byte[BlockSize]; Array.Copy(Buffer, 0, ToDecrypt, 0, BlockSize); Byte[] Plaintext = rsa.Decrypt(ToDecrypt, false); PlaiStream.Write(Plaintext, 0, Plaintext.Length); BlockSize = CrypStream.Read(Buffer, 0, MaxBlockSize); } string output = Encoding.GetEncoding('UTF-8').GetString(PlaiStream.ToArray()); return output;} } }前端加密方法

注:jsencrypt默認(rèn)PKCS#1結(jié)構(gòu),生成密鑰時(shí)需要注意

<script src='http://passport.cnblogs.com/scripts/jsencrypt.min.js'></script> var encryptor = new JSEncrypt() // 創(chuàng)建加密對(duì)象實(shí)例 //之前ssl生成的公鑰,復(fù)制的時(shí)候要小心不要有空格 var pubKey = ’-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC1QQRl0HlrVv6kGqhgonD6A9SU6ZJpnEN+Q0blT/ue6Ndt97WRfxtS’+ ’As0QoquTreaDtfC4RRX4o+CU6BTuHLUm+eSvxZS9TzbwoYZq7ObbQAZAY+SYDgAA5PHf1wNN20dGMFFgVS/y0ZWvv1UNa2laEz0I8Vmr5ZlzIn88GkmSiQIDAQAB-----END PUBLIC KEY-----’ encryptor.setPublicKey(pubKey)//設(shè)置公鑰 var rsaPassWord = encryptor.encrypt(’要加密的內(nèi)容’) // 對(duì)內(nèi)容進(jìn)行加密c#pem格式轉(zhuǎn)換

注:c#的RSACryptoServiceProvider默認(rèn)只支持xml格式的密鑰解析

public class RSA_Unit { static public string Base64EncodeBytes(byte[] byts) { return System.Convert.ToBase64String(byts); } static public byte[] Base64DecodeBytes(string str) { try {return System.Convert.FromBase64String(str); } catch {return null; } } /// <summary> /// 把字符串按每行多少個(gè)字?jǐn)嘈? /// </summary> static public string TextBreak(string text, int line) { var idx = 0; var len = text.Length; var str = new StringBuilder(); while (idx < len) {if (idx > 0){ str.Append(’n’);}if (idx + line >= len){ str.Append(text.Substring(idx));}else{ str.Append(text.Substring(idx, line));}idx += line; } return str.ToString(); } } static public class Extensions { /// <summary> /// 從數(shù)組start開始到指定長度復(fù)制一份 /// </summary> static public T[] sub<T>(this T[] arr, int start, int count) { T[] val = new T[count]; for (var i = 0; i < count; i++) {val[i] = arr[start + i]; } return val; } static public void writeAll(this Stream stream, byte[] byts) { stream.Write(byts, 0, byts.Length); } }點(diǎn)擊并拖拽以移動(dòng) public class RSA_PEM { public static RSACryptoServiceProvider FromPEM(string pem) { var rsaParams = new CspParameters(); rsaParams.Flags = CspProviderFlags.UseMachineKeyStore; var rsa = new RSACryptoServiceProvider(rsaParams); var param = new RSAParameters(); var base64 = _PEMCode.Replace(pem, ''); var data = RSA_Unit.Base64DecodeBytes(base64); if (data == null) {throw new Exception('PEM內(nèi)容無效'); } var idx = 0; //讀取長度 Func<byte, int> readLen = (first) => {if (data[idx] == first){ idx++; if (data[idx] == 0x81) { idx++; return data[idx++]; } else if (data[idx] == 0x82) { idx++; return (((int)data[idx++]) << 8) + data[idx++]; } else if (data[idx] < 0x80) { return data[idx++]; }}throw new Exception('PEM未能提取到數(shù)據(jù)'); }; //讀取塊數(shù)據(jù) Func<byte[]> readBlock = () => {var len = readLen(0x02);if (data[idx] == 0x00){ idx++; len--;}var val = data.sub(idx, len);idx += len;return val; }; //比較data從idx位置開始是否是byts內(nèi)容 Func<byte[], bool> eq = (byts) => {for (var i = 0; i < byts.Length; i++, idx++){ if (idx >= data.Length) { return false; } if (byts[i] != data[idx]) { return false; }}return true; }; if (pem.Contains('PUBLIC KEY')) {/****使用公鑰****///讀取數(shù)據(jù)總長度readLen(0x30);if (!eq(_SeqOID)){ throw new Exception('PEM未知格式');}//讀取1長度readLen(0x03);idx++;//跳過0x00 //讀取2長度readLen(0x30);//Modulusparam.Modulus = readBlock();//Exponentparam.Exponent = readBlock(); } else if (pem.Contains('PRIVATE KEY')) {/****使用私鑰****///讀取數(shù)據(jù)總長度readLen(0x30);//讀取版本號(hào)if (!eq(_Ver)){ throw new Exception('PEM未知版本');}//檢測PKCS8var idx2 = idx;if (eq(_SeqOID)){ //讀取1長度 readLen(0x04); //讀取2長度 readLen(0x30); //讀取版本號(hào) if (!eq(_Ver)) { throw new Exception('PEM版本無效'); }}else{ idx = idx2;}//讀取數(shù)據(jù)param.Modulus = readBlock();param.Exponent = readBlock();param.D = readBlock();param.P = readBlock();param.Q = readBlock();param.DP = readBlock();param.DQ = readBlock();param.InverseQ = readBlock(); } else {throw new Exception('pem需要BEGIN END標(biāo)頭'); } rsa.ImportParameters(param); return rsa; } static private Regex _PEMCode = new Regex(@'--+.+?--+|s+'); static private byte[] _SeqOID = new byte[] { 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00 }; static private byte[] _Ver = new byte[] { 0x02, 0x01, 0x00 }; /// <summary> /// 將RSA中的密鑰對(duì)轉(zhuǎn)換成PEM格式,usePKCS8=false時(shí)返回PKCS#1格式,否則返回PKCS#8格式,如果convertToPublic含私鑰的RSA將只返回公鑰,僅含公鑰的RSA不受影響 /// </summary> public static string ToPEM(RSACryptoServiceProvider rsa, bool convertToPublic, bool usePKCS8) { //https://www.jianshu.com/p/25803dd9527d //https://www.cnblogs.com/ylz8401/p/8443819.html //https://blog.csdn.net/jiayanhui2877/article/details/47187077 //https://blog.csdn.net/xuanshao_/article/details/51679824 //https://blog.csdn.net/xuanshao_/article/details/51672547 var ms = new MemoryStream(); //寫入一個(gè)長度字節(jié)碼 Action<int> writeLenByte = (len) => {if (len < 0x80){ ms.WriteByte((byte)len);}else if (len <= 0xff){ ms.WriteByte(0x81); ms.WriteByte((byte)len);}else{ ms.WriteByte(0x82); ms.WriteByte((byte)(len >> 8 & 0xff)); ms.WriteByte((byte)(len & 0xff));} }; //寫入一塊數(shù)據(jù) Action<byte[]> writeBlock = (byts) => {var addZero = (byts[0] >> 4) >= 0x8;ms.WriteByte(0x02);var len = byts.Length + (addZero ? 1 : 0);writeLenByte(len);if (addZero){ ms.WriteByte(0x00);}ms.Write(byts, 0, byts.Length); }; //根據(jù)后續(xù)內(nèi)容長度寫入長度數(shù)據(jù) Func<int, byte[], byte[]> writeLen = (index, byts) => {var len = byts.Length - index;ms.SetLength(0);ms.Write(byts, 0, index);writeLenByte(len);ms.Write(byts, index, len);return ms.ToArray(); }; if (rsa.PublicOnly || convertToPublic) {/****生成公鑰****/var param = rsa.ExportParameters(false);//寫入總字節(jié)數(shù),不含本段長度,額外需要24字節(jié)的頭,后續(xù)計(jì)算好填入ms.WriteByte(0x30);var index1 = (int)ms.Length;//固定內(nèi)容// encoded OID sequence for PKCS #1 rsaEncryption szOID_RSA_RSA = '1.2.840.113549.1.1.1'ms.writeAll(_SeqOID);//從0x00開始的后續(xù)長度ms.WriteByte(0x03);var index2 = (int)ms.Length;ms.WriteByte(0x00);//后續(xù)內(nèi)容長度ms.WriteByte(0x30);var index3 = (int)ms.Length;//寫入ModuluswriteBlock(param.Modulus);//寫入ExponentwriteBlock(param.Exponent);//計(jì)算空缺的長度var byts = ms.ToArray();byts = writeLen(index3, byts);byts = writeLen(index2, byts);byts = writeLen(index1, byts);return '-----BEGIN PUBLIC KEY-----n' + RSA_Unit.TextBreak(RSA_Unit.Base64EncodeBytes(byts), 64) + 'n-----END PUBLIC KEY-----'; } else {/****生成私鑰****/var param = rsa.ExportParameters(true);//寫入總字節(jié)數(shù),后續(xù)寫入ms.WriteByte(0x30);int index1 = (int)ms.Length;//寫入版本號(hào)ms.writeAll(_Ver);//PKCS8 多一段數(shù)據(jù)int index2 = -1, index3 = -1;if (usePKCS8){ //固定內(nèi)容 ms.writeAll(_SeqOID); //后續(xù)內(nèi)容長度 ms.WriteByte(0x04); index2 = (int)ms.Length; //后續(xù)內(nèi)容長度 ms.WriteByte(0x30); index3 = (int)ms.Length; //寫入版本號(hào) ms.writeAll(_Ver);}//寫入數(shù)據(jù)writeBlock(param.Modulus);writeBlock(param.Exponent);writeBlock(param.D);writeBlock(param.P);writeBlock(param.Q);writeBlock(param.DP);writeBlock(param.DQ);writeBlock(param.InverseQ);//計(jì)算空缺的長度var byts = ms.ToArray();if (index2 != -1){ byts = writeLen(index3, byts); byts = writeLen(index2, byts);}byts = writeLen(index1, byts);var flag = ' PRIVATE KEY';if (!usePKCS8){ flag = ' RSA' + flag;}return '-----BEGIN' + flag + '-----n' + RSA_Unit.TextBreak(RSA_Unit.Base64EncodeBytes(byts), 64) + 'n-----END' + flag + '-----'; } } }

以上就是詳解c#與js的rsa加密互通的詳細(xì)內(nèi)容,更多關(guān)于c#與js的rsa加密互通的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 一区二区欧美视频 | 久久国产精品精品国产 | 91中文字幕在线观看 | 天天干女人 | 精品久久久久久久久久久久久久久久久久久 | 亚洲欧美日韩电影 | 国产一区二 | 亚洲h| 亚洲成人aaa | 国产精品乱码一二三区的特点 | 欧美一级全黄 | 亚洲成人久久久 | 欧美视频免费看 | 国产精品自产拍在线观看桃花 | 婷婷免费在线观看 | 三级视频在线观看 | 国内精品久久久久 | 日韩三级电影在线免费观看 | 亚洲精品久久久久国产 | 中文字幕本久久精品一区 | 91亚洲精品乱码久久久久久蜜桃 | 国产精品久久久一区二区 | 欧美日韩电影一区 | 色婷婷综合久久久中文字幕 | 国产午夜精品久久久 | 国产黄色在线免费看 | 91午夜精品 | 区一区二区三在线观看 | 日本不卡一区二区三区在线观看 | 亚洲视频 欧美视频 | 亚洲成人精品在线观看 | 一级全黄性色生活片 | 欧美精品三区 | 国模精品视频一区二区 | 欧美日韩电影一区二区三区 | 亚洲精品电影在线观看 | 国产午夜精品久久久久久久 | 亚洲 中文 欧美 日韩 在线观看 | 精品自拍视频 | 亚洲免费小视频 | 精品国产乱码久久久久久密桃99 | 国产羞羞视频 | 亚洲日本乱码一区两区在线观看 | 成人欧美一区二区三区黑人孕妇 | 久久久久久亚洲精品 | 国产精品人人做人人爽 | 欧美亚洲二区 | 久久亚洲免费 | 欧美日韩免费在线 | 97国产一区二区精品久久呦 | 国产精品久久久久久久一区探花 | 日韩一区二区三区在线观看 | 日日干,天天干 | 久久久久久久中文 | 亚洲一区精品在线 | 影音先锋 色先锋 | 国产福利一区二区 | 91久久久久久久久久久久久久 | 97视频久久| 三级精品 | 精品亚洲一区二区三区 | 大桥未久亚洲精品久久久强制中出 | 欧日韩毛片| 久久综合一区二区三区 | 欧美精品色 | 精品av | 一区二区三区四区在线视频 | 久久精品极品 | 欧美视频在线免费 | 成人在线观看av | 免费xxxxx在线观看网站软件 | 成人在线小视频 | 欧美一区二区三区在线观看 | 精品国产一区二区三区久久久蜜月 | 超碰在线影院 | 91成人免费在线观看 | 久久美女 | 亚洲电影免费 | 日韩欧美一区二区三区久久婷婷 | 久国产精品 | 国产成人免费 | 99久久精品免费 | 国产一区二区视频在线观看 | 成人精品在线观看 | 久久欧美高清二区三区 | 最新中文字幕 | 色婷婷国产精品免费网站 | 国产一级免费视频 | 久久av综合 | 最新超碰 | 亚洲免费电影一区 | 国产xxxxxxxxxx | 欧美成亚洲 | 成人av综合| 超碰人人爽| 国产精品1页| 操操操操网 | 99久久婷婷国产综合精品 | 久久99精品视频 | 日本午夜精品 | 99精品久久久 | 国产精品极品美女在线观看免费 | 欧美精品入口蜜桃 | 在线免费日韩 | 欧美一区二区三区精品 | 欧美精品一区二区三区在线 | 欧美亚洲国产一区 | 国产精品免费在线 | 成人av教育 | 欧美综合区 | av一区二区在线观看 | 91精品国产综合久久久久久 | 在线精品亚洲欧美日韩国产 | 久久久久久极品 | 精品久久久久久久久久久久 | 青青草一区二区 | 欧州一区二区 | 在线观看av网站永久 | 日韩一区精品视频 | 欧美不卡视频一区发布 | 一区二区三区av | 国产精品福利在线观看 | 无码日韩精品一区二区免费 | 日韩国产一区二区 | 欧美精品a∨在线观看不卡 欧美日韩中文字幕在线播放 | 午夜久久久久 | 日韩精品一区二区三区在线 | 日韩欧美在线中文字幕 | 亚洲成人免费 | 精品视频在线观看 | 最新日韩av| 欧美一区在线观看视频 | 久久夜视频 | 亚洲精品66 | 瑟瑟视频在线看 | 成人在线视频免费观看 | 日韩欧美一区二区三区免费观看 | 91高清视频在线观看 | 久久久精品影院 | 1000部精品久久久久久久久 | 天堂欧美城网站网址 | 性视频一区二区 | 欧美freesex交免费视频 | 国产高清免费 | 国产精品亚洲a | 青草青草久热精品视频在线观看 | 这里精品 | 岛国av免费看 | 国产福利精品一区 | 久久伊人精品网 | 国产精品久久久久久久久久 | 欧美一级黄视频 | 99久久婷婷国产综合精品 | 欧美一区二区三区xxxx监狱 | 成年人在线看 | 亚洲午夜电影在线 | 一区二区日韩欧美 | 999久久久国产999久久久 | 久久久精品国产 | 黑人巨大精品欧美一区二区三区 | 国产精品高潮呻吟久久av野狼 | 欧美日韩在线视频观看 | 波多野结衣在线网址 | 成人久久久 | 国产综合久久 | 在线视频成人永久免费 | 国产精品99久久久久久久vr | 久久久一区二区 | 一区在线视频 | 成人欧美一区二区三区黑人孕妇 | 欧美性18 | 婷婷桃色网| 精品国偷自产国产一区 | 国户精品久久久久久久久久久不卡 | 亚洲精品电影在线观看 | 午夜剧 | 一区二区三区国产视频 | 亚洲精品久久久久久一区二区 | 国产精品成人在线 | 在线精品观看 | 亚洲女人天堂成人av在线 | 欧美日韩精品一区二区三区蜜桃 | 久久99久久久久久 | 三级成人片 | 国产精品18hdxxxⅹ在线 | 国产精品久久久久久久久免费 | 美女主播精品视频一二三四 | 亚洲欧洲在线观看 | 色吊丝2288sds中文字幕 | 免费日韩成人 | 免费在线成人 | 日本一区二区不卡 | 欧美色欧美亚洲另类七区 | 欧日韩不卡在线视频 | 亚洲欧美一区二区三区在线 | 国产成人精品一区二区三区视频 | 亚洲国产精品视频 | 久久久av亚洲男天堂 | 99r在线 | 91激情视频 | 91麻豆精品国产91久久久更新时间 | 亚洲精品自在在线观看 | 国产乱码精品一区二区三 | 日韩欧美在线观看 | 久久香蕉国产视频 | 伊人超碰 | 精品一二三区在线观看 | 综合伊人 | 羞羞视频在线观免费观看 | 二区在线视频 | 日本一区二区三区四区视频 | 久久婷婷国产麻豆91天堂 | 成人在线高清视频 | 国产精品久久久久毛片软件 | 丁香久久 | 国产精品自产拍在线观看桃花 | 亚洲日韩中文字幕一区 | 操人网| 国产精品无码专区在线观看 | 亚洲精品日韩综合观看成人91 | av三级在线观看 | 99re视频| 国产一区二区三区四区在线观看 | 亚洲tv国产 | 久久手机在线视频 | 看黄网址 | 日本久久久久久 | 日本高清中文字幕 | 成人免费一区二区三区视频网站 | va在线 | 超碰在线播| 亚洲久草 | 日夜夜精品 | 欧美视频亚洲视频 | 一级黄色片看看 | 国产成人精品一区二区三区视频 | 91视频在线网址 | 欧美 日本 国产 | 成人国产精品一级毛片视频 | 国产成年免费视频 | 精品香蕉一区二区三区 | 久久久久久国产 | av久久 | 欧美国产在线视频 | 中文字幕久久久 | 密室大逃脱第六季大神版在线观看 | 欧美日韩精品一区二区三区 | 九九热精品视频 | 亚洲精品一区二区三区在线看 | 国产欧美一区二区视频 | 日韩a | 婷婷丁香六月天 | 国产成人一区 | 99精品视频免费 | caoporn免费在线视频 | 婷婷毛片 | 91av在| 97国产超碰 | 亚洲精品视频免费 | 欧美理伦片在线播放 | 在线视频一区二区 | 日韩在线视频中文字幕 | www.久久久久久久久久久久 | 九九综合| 新91在线| 一区二区成人在线 | 亚洲 成人 av| 91精品国产91久久综合桃花 | 在线观看国产视频 | 欧美一区2区三区4区公司二百 | 天天草天天干天天 | 国产美女精品一区二区三区 | 日韩成人在线免费视频 | 日韩2区 | 精品久久久久久久久久久久久久久 | 精品一区二区三区免费毛片爱 | 久久久久国产一级毛片高清版小说 | 免费的一级毛片 | 亚洲免费视频网站 | 日韩欧美视频一区 | 国产精品久久嫩一区二区免费 | 欧美日韩在线视频一区 | 欧美日韩在线精品 | 青青草超碰在线 | 视频一区在线 | 免费一区| 久久久久久久国产精品 | 精品久久久久久久久久久久久久久 | 色婷婷国产精品久久包臀 | 国产aaaaav久久久一区二区 | 欧美日韩视频在线第一区 | 黄色大片网 | 欧美视频免费在线 | 亚洲成人免费在线 | 亚洲精品视频播放 | 精品视频三区 | 亚洲一区高清 | 影音先锋资源av | 亚洲精品在线网站 | 国产精品白浆 | 日日天天 | 2019天天操| 99精品欧美一区二区蜜桃免费 | 亚洲日韩aⅴ在线视频 | 天天精品| 久久黄网 | 91av在线不卡| 99综合| 精品亚洲一区二区 | 亚洲一在线 | 亚洲激情第一页 | 成人亚洲免费视频 | 久久精品国产亚洲一区二区三区 | 欧美激情网址 | 自拍偷拍小视频 | 黄色一级片视频播放 | 国产精品久久久久久久久免费高清 | 黄免费观看 | 成人涩涩网站 | 国产老女人精品毛片久久 | 综合一区 | 激情自拍偷拍 | 欧美夜夜爽| 亚洲女人天堂成人av在线 | 亚洲 精品 综合 精品 自拍 | 亚洲一区中文字幕 | 黑人巨大精品欧美一区免费视频 | 国产精品免费av | 日本一级毛片视频 | 欧美国产日韩在线 | av久久| 欧美成人黄激情免费视频 | 99视频免费看 | 欧美久热 | 亚洲精品专区 | 亚洲精品久久久一区二区三区 | 欧美精品1区2区3区 免费亚洲婷婷 | 精品一区二区国产 | 精品一区二区三区久久久 | av毛片| 国产精品久久久久久妇女6080 | 69久久99精品久久久久婷婷 | 久久久人成影片一区二区三区 | 黄色大片成人 | 欧美一区二区三区在线看 | 亚洲中出 | 精品视频一区在线观看 | 男人天堂亚洲天堂 | 免费国产视频在线观看 | av一区在线观看 | 欧美日韩一区二区三区在线观看 | 性色国产 | 古典武侠第一页久久777 | 国产高清在线a视频大全 | 亚洲伦理 | 成人a级网站 | 午夜影院免费 | www久久久| 亚洲乱码国产乱码精品精的特点 | 一级全黄少妇性色生活片免费 | 91久久久久久久久久久久久久久久 | 啵啵影院午夜男人免费视频 | 一级毛片免费播放 | 丝袜+亚洲+另类+欧美+变态 | 黄色一级免费大片 | 亚洲视频在线观看免费 | 亚洲中字幕女 | 中文字幕在线观看av | 成人国产免费视频 | 97国产精品| 国产精品亚洲天堂 | 99久久精品免费看国产免费软件 | 狠狠爱www人成狠狠爱综合网 | 亚洲男人天堂网 | 国产精品久久久久9999 | 免费看国产片在线观看 | 欧美日韩精品一区二区在线观看 | 亚洲欧美在线观看 | 国产一区二区亚洲 | 欧美 日本 国产 | 黑人巨大精品欧美一区二区三区 | 欧美一区二区另类 | 国产成人在线一区二区 | 一级毛片色一级 | 精久久 | 欧美 日韩 国产 一区 | 久久国产成人午夜av影院宅 | 久久久91精品国产一区二区三区 | 国产亚洲精品成人av久久影院 | 欧美午夜在线观看 | 亚洲毛片在线 | 国产99久久久精品视频 | 天天天天爽 | 亚洲第一福利视频 | 国产精选一区二区三区不卡催乳 | 999国产一区二区三区四区 | 亚洲国产成人av好男人在线观看 | 伊人网视频在线 | 国产女爽爽视频精品免费 | 精品国产91乱码一区二区三区 | 亚洲精品久久久久久久久久久 | 久久新 | 日韩国产欧美视频 | 中国电影黄色一级片免费观看 | 国产成人福利视频 | av天天干 | 国产成人综合在线 | 亚洲欧洲精品视频在线观看 | 欧美三级影院 | 日韩精品在线网站 | 五月婷婷激情 | 日韩成人中文字幕 | 黄色av网站免费 | 久久国产综合 | 色吧欧美| 亚洲视频在线看 | 国产人成精品一区二区三 | 亚洲日本中文 | 亚洲福利电影网 | 国产精品不卡视频 | 二区视频 | 欧美精品99 | 国产精品无码永久免费888 | 日韩国产中文字幕 | 91欧美激情一区二区三区成人 | 91综合视频在线观看 | 蜜桃免费一区二区三区 | 中文字幕av网站 | 精品影院 | 99国产精品99久久久久久 | 成人精品视频免费 | 超碰香蕉| 日韩伦理一区二区 | 污色视频在线观看 | 久久www免费人成看片高清 | 欧美在线观看网站 | 日韩在线观看视频一区二区 | 久久久久久久久99精品 | 欧美激情视频一区二区三区在线播放 | 日韩精品 电影一区 亚洲 | 天天想天天干 | 午夜精品久久久久久99热软件 | 搞黄视频在线观看 | 亚洲精品一区二区三区 | 日韩视频免费看 | 国产成人精品免高潮在线观看 | 国产成人av电影 | 999精品嫩草久久久久久99 | 国产一区二区三区在线免费观看 | 欧美激情综合五月色丁香小说 | 欧美日韩一区二区在线播放 | 亚洲成人高清 | 欧美黄色激情 | 久久a毛片| 亚洲国产高清视频 | 久久精彩视频 | 91高清视频| 欧美一级黄带 | 美日韩精品视频 | 欧美激情一区二区三区 | 一级黄色片欧美 | 亚洲免费在线观看 | 欧美成人午夜视频 | 精品亚洲一区二区 | 久久综合一区二区三区 | 精品在线一区二区 | 日本精品一区二 | 亚洲视频欧美视频 | 欧美在线视频一区 | 欧美一区在线视频 | 国产激情精品视频 | 精品久久久久久久久久久久久久久久久久 | 亚洲 中文 欧美 日韩 在线观看 | 精品一区二区三区免费毛片爱 | 亚洲社区在线 | 九九九视频精品 | 欧美日韩高清不卡 | 国产日韩在线播放 | 亚洲一区二区精品在线观看 | 人人做人人澡人人爽欧美 | 亚洲高清免费 | 欲色av | 91亚洲精品乱码久久久久久蜜桃 | 99视频在线 | 亚洲精品国产剧情久久9191 | 午夜精品一区 | 欧美一级免费 | 日韩高清在线一区 | 日韩精品一区二区在线观看 | 91在线视频播放 | 99精品久久精品一区二区爱城 | av免费观看网站 | 久草成人| 久热在线视频 | 亚洲视频久久久 | 亚洲成人精品在线观看 | 99久久免费看视频 | 色花av| 久久91精品 | 久久精品久久久久久久久久16 | 国产精品久久久久久久久软件 | 夜添久久精品亚洲国产精品 | 欧美在线观看一区 | 久久久精品国产 | 日韩国产免费观看 | 国产成人一区二区三区 | 亚洲精品成人 | 亚洲国产精品一区二区久久 | 亚洲精品乱码 | 精品视频在线观看 | 久久久久一区二区 | 在线观看精品视频网站 | 亚洲免费电影一区 | 日韩在线观看视频一区二区三区 | 在线播放黄色片网站 | 日韩欧美一级精品久久 | 国产999精品久久久久 | 久色视频在线观看 | 青青草在线免费视频 | 在线观看亚洲一区二区三区 | 国产99热 | 国产亚洲欧美精品永久 | 一区二区国产精品 | 欧美xxxx色视频在线观看免费 | 国产一区 欧美 | 天天天天天天天天操 | 亚洲高清视频网站 | 国产精品毛片久久久久久久 | 天天碰天天操 | 亚洲午夜精品一区二区三区 | 中文字幕在线免费 | 久久久网 | 天堂精品一区 | 日韩午夜免费 | 精品国产伦一区二区三区观看说明 | 日韩三级电影免费观看 | 欧美精品一区二区蜜臀亚洲 | 99pao成人国产永久免费视频 | 国产区在线 | 亚洲精品四区 | 国产亚洲欧美一区二区 | 男人天堂a | 久久国产亚洲精品 | 日韩精品一区在线 | 国产成人高清视频 | 国产艳妇av视国产精选av一区 | 四虎新网站 | 久久成人国产精品 | 久久av资源 | 精品毛片在线 | 亚洲一区二区精品视频 | 精品91| 精品国产精品三级精品av网址 | 日韩久久久久久久久久久 | 欧美综合在线观看 | 91视频.com | 久久久国产精品免费 | 久久黄色| 午夜精品一区二区三区免费视频 | 黄色一级网站 | 成人综合在线观看 | 亚色在线| 四虎免费在线播放 | 久久久久久国产精品久久 | 日本一区二区高清不卡 | 国产一区二区三区网站 | julia中文字幕久久一区二区 | 免费精品 | 国产成人午夜高潮毛片 | 欧美国产视频 | 狠狠av| 精品一区二区三区免费视频 | 欧美日韩中文 | 色先锋影音 | h片在线看 | 国产精品www | 四影虎影www4hu23cmo | 一区二区三区不卡视频 | 99伊人| 国产精品视频久久久 | 国产精品久久久久久久美男 | 国产一区二区三区在线免费观看 | 国产欧精精久久久久久久 | 色综合久久久久综合99 | 精品国产精品三级精品av网址 | 在线观看中文字幕 | 精品国产乱码久久久久夜 | www久久国产 | 国产区在线 | 精品国产一区二区三区成人影院 | 日韩视频精品在线 | 亚洲成人日韩 | 日韩中文字幕在线免费观看 | 国产成人精品免高潮在线观看 | 欧美精品日韩 | 亚洲成人影院在线观看 | 龙珠z国语291集普通话 | 中文字幕亚洲精品 | 黄色一级片| 国产亚洲欧美一区二区 | 国产在线一区二区三区 | 亚洲欧美激情精品一区二区 | 国产精品久久久久久久久久妞妞 | 青娱乐网 | 亚洲人成人一区二区在线观看 | 色av综合| 精品亚洲视频在线观看 | 亚洲免费在线视频 | 欧美在线三级 | 亚洲人成人一区二区在线观看 | 欧美一级免费看 | 精品视频一区二区三区在线观看 | 日韩一区二区福利 | 国产精品视频一二三区 | 亚洲国产精品久久久 |