色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

C#國密算法庫拆解:SM2/SM3/SM4實(shí)現(xiàn)與聯(lián)調(diào)避坑

C#國密算法庫拆解:SM2/SM3/SM4實(shí)現(xiàn)與聯(lián)調(diào)避坑 簡介面向需要在 C#/.NET 項(xiàng)目中落地國密算法的開發(fā)者與學(xué)習(xí)者這套代碼示例圍繞 SM2、SM3、SM4 三種算法給出可運(yùn)行的 WinForm 演示幫助理解密鑰生成、簽名驗(yàn)簽、摘要計(jì)算及分組加解密的調(diào)用方式。壓縮包共 51 個(gè)文件約 5.33MB主體為 cs 源碼、resx 界面資源、dll 依賴庫與 exe 可執(zhí)行程序并附帶解決方案與項(xiàng)目配置便于在 Visual Studio 中打開、調(diào)試和二次改造。內(nèi)容涵蓋算法工具類、窗體交互邏輯及 BouncyCastle 加密庫引用讀者可對照界面操作觀察各算法的輸入輸出與參數(shù)配置快速梳理國密功能從界面到核心實(shí)現(xiàn)的代碼路徑。已有 1316 人學(xué)習(xí)下載適合作為 C# 國密入門、課程實(shí)驗(yàn)或業(yè)務(wù)模塊預(yù)研的參考樣例。1. 一次驗(yàn)簽失敗的聯(lián)調(diào)這套 C# 國密算法庫到底補(bǔ)的是哪個(gè)洞對接一個(gè)內(nèi)部系統(tǒng)的簽名接口對方說只收國密算法SM2 簽名加 SM3 摘要報(bào)文用 SM4 加密。很多人第一反應(yīng)是在項(xiàng)目里搜一下有沒有現(xiàn)成的算法包結(jié)果發(fā)現(xiàn)可用的 C# 國密算法實(shí)現(xiàn)要么只覆蓋其中一兩種要么把密鑰編碼、密文排列這些細(xì)節(jié)隱藏了起來等到對方驗(yàn)簽失敗就無從查起。這套包含 SM2、SM3、SM4 的 C# 實(shí)現(xiàn)價(jià)值在于把曲線參數(shù)、補(bǔ)位規(guī)則、ZA 值計(jì)算、C1C3C2 排列這些容易被第三方庫隱藏起來的部分全部展開成可讀代碼。適合正在做國密改造的后端開發(fā)也適合想搞清楚算法內(nèi)部機(jī)理、準(zhǔn)備自己動(dòng)手增加支持的工程師。2. 目錄與運(yùn)行SM2/SM3/SM4 三套算法在工程里怎么分家2.1 三層拆分算法內(nèi)核、編碼適配、調(diào)用入口這類 C# 國密庫的目錄結(jié)構(gòu)通常分成三層這個(gè)劃分方式雖然簡單但基本不會(huì)出錯(cuò)。算法內(nèi)核只關(guān)心數(shù)學(xué)和字節(jié)操作不接觸任何 IO編碼層負(fù)責(zé)十六進(jìn)制、Base64、ASN.1/DER、PEM 之間的轉(zhuǎn)換調(diào)用入口負(fù)責(zé)把參數(shù)整理好丟給內(nèi)核。第一次閱讀源碼時(shí)按這個(gè)順序看比從 Program.cs 往下追要快得多。SmCrypto/ ├── src/ │ ├── SmCrypto.Core/ # 純算法無外部依賴 │ │ ├── Sm2/ │ │ │ ├── Sm2Curve.cs # 曲線參數(shù)、點(diǎn)運(yùn)算、點(diǎn)乘 │ │ │ ├── Sm2.cs # 簽名驗(yàn)簽、加解密、KDF │ │ │ └── Sm2KeyPair.cs # 密鑰生成與公私鑰解析 │ │ ├── Sm3/ │ │ │ └── Sm3.cs # 常量、填充、壓縮函數(shù) │ │ ├── Sm4/ │ │ │ ├── Sm4.cs # 輪函數(shù)、單分組加解密 │ │ │ ├── Sm4Constants.cs # S 盒、FK、CK │ │ │ └── Sm4Padding.cs # PKCS7 / 無填充 │ │ ├── Encoding/ │ │ │ ├── Hex.cs # 大小寫、帶不帶空格 │ │ │ └── Asn1.cs # DER 序列化給密鑰和簽名用 │ │ └── Utils/ │ │ ├── BigIntegerExtensions.cs# 定長大端轉(zhuǎn)換、模逆 │ │ └── SecureRandom.cs # 密碼學(xué)安全隨機(jī)數(shù) │ └── SmCrypto.Console/ │ └── Program.cs # 手敲的驗(yàn)證入口 └── tests/ └── SmCrypto.Tests/ # 標(biāo)準(zhǔn)測試向量 自身往返測試看這個(gè)結(jié)構(gòu)能發(fā)現(xiàn)一個(gè)細(xì)節(jié)SM2 單獨(dú)占一個(gè)目錄還分了三個(gè)文件。原因很實(shí)在SM2 是橢圓曲線算法點(diǎn)運(yùn)算、曲線參數(shù)、業(yè)務(wù)層的簽名驗(yàn)簽是三件不同的事混在一個(gè)類里到后面加密鑰交換或者換曲線就麻煩了。SM3 和 SM4 各自只有一個(gè)主文件是因?yàn)樗鼈兊膶?shí)現(xiàn)相對獨(dú)立沒有那么多分支。2.2 目標(biāo)框架與依賴為什么寧可手寫也不用系統(tǒng)接口.NET 生態(tài)里做國密有個(gè)現(xiàn)實(shí)問題系統(tǒng)自帶的加密接口在多數(shù)版本上沒有覆蓋 SM2、SM3、SM4即使新版本在部分平臺(tái)上補(bǔ)了 SM3/SM4Windows 和 Linux 的行為也不完全一致跨平臺(tái)部署很容易遇到問題。所以這套實(shí)現(xiàn)選擇純托管代碼零外部依賴System.Numerics.BigInteger就是唯一的大數(shù)工具。目標(biāo)框架怎么選看調(diào)用方。要被老項(xiàng)目引用就多目標(biāo)輸出netstandard2.0加net8.0只做新服務(wù)直接上net8.0省事。真正影響代碼寫法的是這三處關(guān)注點(diǎn)netstandard2.0net8.0大數(shù)System.Numerics.BigInteger同上另有TryWriteBytes定長輸出高性能切片需要System.Memory包原生Spanbyte隨機(jī)數(shù)RNGCryptoServiceProviderRandomNumberGenerator.Fill我一般會(huì)統(tǒng)一寫RandomNumberGenerator.Create()拿一個(gè)實(shí)例兩個(gè)框架都能編譯不用寫#if。這一點(diǎn)看似無關(guān)緊要但真正到適配各個(gè)框架版本時(shí)這一點(diǎn)會(huì)節(jié)省很多時(shí)間。提示不要把System.Random用在任何密鑰、k 值、IV 上。它產(chǎn)生的序列可預(yù)測SM2 的 k 一旦可預(yù)測私鑰就等價(jià)于公開了。2.3 第一次運(yùn)行先把 SM3 的哈希值打印出來SM2 的調(diào)試成本高因?yàn)樗鼱砍峨S機(jī)數(shù)、點(diǎn)乘、編碼三件事所以第一次運(yùn)行不要碰 SM2先驗(yàn)證 SM3。新建一個(gè)控制臺(tái)項(xiàng)目引用 Core寫十行代碼using SmCrypto.Core.Sm3; // 標(biāo)準(zhǔn)附錄里的經(jīng)典向量SM3(abc) byte[] digest Sm3.Hash(System.Text.Encoding.ASCII.GetBytes(abc)); System.Console.WriteLine(Hex.ToHex(digest, upper: false));跑起來dotnet run --project src/SmCrypto.Console正常輸出應(yīng)該是66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0這 64 個(gè)十六進(jìn)制字符對上了說明填充邏輯、字節(jié)序、壓縮函數(shù)這三塊沒問題。再補(bǔ)一個(gè)長度不是 3 的用例驗(yàn)證填充邊界把a(bǔ)bcd重復(fù) 16 次正好 64 字節(jié)會(huì)觸發(fā)多補(bǔ)一整個(gè)分組期望結(jié)果debe9ff92275b8a138604889c18e5a4d6fdb70e5387e5765293dcba39c0c5732這兩個(gè)值都對SM3 這塊基本可以放心了。SM4 用標(biāo)準(zhǔn)向量key 0123456789abcdeffedcba9876543210、明文與 key 相同單分組加密結(jié)果是681edf34d206965e86b3e94f536e4246同一個(gè)塊再加密一次得到595298c7c6fd271f0402f804c33d3f66加解密往返能對回去才能說明輪密鑰沒有寫反。SM2 不適合這么驗(yàn)證后面第 4 章講怎么用往返測試加對方的公鑰做交叉驗(yàn)證。3. SM3 與 SM4從填充到輪函數(shù)兩段能直接抄的 C# 實(shí)現(xiàn)3.1 SM3 的填充與壓縮64 輪里真正在變的是什么SM3 輸出 256 位分組 512 位結(jié)構(gòu)上和常見的哈希算法相近但消息擴(kuò)展和輪函數(shù)里的置換是自己的一套。先看填充這是新手最容易寫錯(cuò)的地方private static byte[] Pad(byte[] msg) { long bitLen (long)msg.Length * 8; // 比特長度用 long 防止大報(bào)文溢出 int padLen 64 - (int)((msg.Length 9) % 64); // 0x80 一字節(jié) 8 字節(jié)長度 if (padLen 64) padLen 0; // 剛好對齊時(shí)不再補(bǔ)整塊 byte[] buf new byte[msg.Length 1 padLen 8]; Buffer.BlockCopy(msg, 0, buf, 0, msg.Length); buf[msg.Length] 0x80; // 先補(bǔ)一個(gè) 1后面全 0 for (int i 0; i 8; i) buf[buf.Length - 1 - i] (byte)(bitLen (8 * i)); // 大端寫長度 return buf; }bitLen必須用 64 位整型長度字段是大端序這兩點(diǎn)在跨語言對接時(shí)最常出錯(cuò)。padLen那個(gè)if判斷也不能少當(dāng)(msg.Length 9) % 64 0時(shí)會(huì)算出 64如果不處理就會(huì)多補(bǔ)一整塊哈希值直接不同。壓縮函數(shù)的核心是消息擴(kuò)展和 64 輪迭代private static void Compress(uint[] v, byte[] block, int offset) { uint[] w new uint[68]; uint[] w1 new uint[64]; for (int i 0; i 16; i) // 前 16 個(gè)字直接讀大端 w[i] ReadBe32(block, offset i * 4); for (int j 16; j 68; j) // 擴(kuò)展到 68 個(gè)字 w[j] P1(w[j - 16] ^ w[j - 9] ^ Rol(w[j - 3], 15)) ^ Rol(w[j - 13], 7) ^ w[j - 6]; for (int j 0; j 64; j) w1[j] w[j] ^ w[j 4]; // W 只是 W 的異或組合 uint a v[0], b v[1], c v[2], d v[3]; uint e v[4], f v[5], g v[6], h v[7]; for (int j 0; j 64; j) { uint t j 16 ? 0x79cc4519u : 0x7a879d8au; // 前 16 輪與后 48 輪常量不同 uint a12 Rol(a, 12); uint ss1 Rol(a12 e Rol(t, j % 32), 7); uint ss2 ss1 ^ a12; uint ff j 16 ? (a ^ b ^ c) : ((a b) | (a c) | (b c)); uint gg j 16 ? (e ^ f ^ g) : ((e f) | (~e g)); uint tt1 ff d ss2 w1[j]; uint tt2 gg h ss1 w[j]; d c; c Rol(b, 9); b a; a tt1; h g; g Rol(f, 19); f e; e P0(tt2); } v[0] ^ a; v[1] ^ b; v[2] ^ c; v[3] ^ d; // 末態(tài)異或回初值 v[4] ^ e; v[5] ^ f; v[6] ^ g; v[7] ^ h; } private static uint P0(uint x) x ^ Rol(x, 9) ^ Rol(x, 17); private static uint P1(uint x) x ^ Rol(x, 15) ^ Rol(x, 23);這里的參數(shù)說明一下v是 8 個(gè) 32 位的初始向量第一塊用固定常量后續(xù)塊用上一塊的輸出Rol(x, n)是 32 位循環(huán)左移n要先% 32否則 C# 的移位運(yùn)算符只取低 5 位Rol(t, j % 32)里的取模不能省。w數(shù)組 68 個(gè)字、w1數(shù)組 64 個(gè)字這兩個(gè)長度是固定的用List或者動(dòng)態(tài)擴(kuò)容會(huì)讓每塊多做幾次分配壓測時(shí)差別能看出來。3.2 SM4 輪函數(shù)一個(gè) T 變換貫穿 32 輪SM4 是分組長度 128 位、密鑰長度 128 位的分組密碼加密和解密用同一套輪函數(shù)只是輪密鑰順序反過來。它的全部復(fù)雜度都集中在T變換上// 字節(jié)代換把 32 位字按字節(jié)逐個(gè)查 S 盒 private static uint Tau(uint a) ((uint)SBox[(a 24) 0xFF] 24) | ((uint)SBox[(a 16) 0xFF] 16) | ((uint)SBox[(a 8) 0xFF] 8) | SBox[a 0xFF]; // 線性變換加密用 L密鑰擴(kuò)展用 L1少移位一次 private static uint L(uint b) b ^ Rol(b, 2) ^ Rol(b, 10) ^ Rol(b, 18) ^ Rol(b, 24); private static uint L1(uint b) b ^ Rol(b, 13) ^ Rol(b, 23); private static uint T(uint x) L(Tau(x)); // 輪函數(shù)里的合成置換 private static uint T1(uint x) L1(Tau(x)); // 密鑰擴(kuò)展里的合成置換S 盒是 256 字節(jié)的常量表放在Sm4Constants.cs里。寫的時(shí)候容易犯的錯(cuò)是手抄表格抄錯(cuò)一個(gè)字節(jié)結(jié)果只有某些特殊輸入才會(huì)出錯(cuò)極難排查。建議直接從標(biāo)準(zhǔn)文檔復(fù)制然后寫一個(gè)單元測試斷言SBox[0] 0xd6、SBox[255] 0x48用首尾兩個(gè)值做初步校驗(yàn)。密鑰擴(kuò)展和單分組加解密public static uint[] ExpandKey(byte[] key) { if (key.Length ! 16) throw new ArgumentException(SM4 密鑰必須 16 字節(jié)); uint k0 ReadBe32(key, 0) ^ 0xa3b1bac6; // FK 是四個(gè)固定常量 uint k1 ReadBe32(key, 4) ^ 0x56aa3350; uint k2 ReadBe32(key, 8) ^ 0x677d9197; uint k3 ReadBe32(key, 12) ^ 0xb27022dc; uint[] rk new uint[32]; for (int i 0; i 32; i) { uint k4 k0 ^ T1(k1 ^ k2 ^ k3 ^ Ck(i)); // CK 由公式生成不必手寫表 rk[i] k4; k0 k1; k1 k2; k2 k3; k3 k4; } return rk; } // CK[i] (ck0,ck1,ck2,ck3)其中 ck_j ((4i j) * 7) mod 256 private static uint Ck(int i) { uint v 0; for (int j 0; j 4; j) v (v 8) | (uint)(((4 * i j) * 7) 0xFF); return v; } // 加解密共用解密時(shí)把輪密鑰倒著傳進(jìn)來即可 public static void CryptBlock(uint[] rk, byte[] input, int inOff, byte[] output, int outOff) { uint x0 ReadBe32(input, inOff); uint x1 ReadBe32(input, inOff 4); uint x2 ReadBe32(input, inOff 8); uint x3 ReadBe32(input, inOff 12); for (int i 0; i 32; i) { uint x4 x0 ^ T(x1 ^ x2 ^ x3 ^ rk[i]); // 一輪只產(chǎn)出一個(gè)新字 x0 x1; x1 x2; x2 x3; x3 x4; } // 輸出要反序這一步漏了會(huì)得到完全對不上的結(jié)果 WriteBe32(output, outOff, x3); WriteBe32(output, outOff 4, x2); WriteBe32(output, outOff 8, x1); WriteBe32(output, outOff 12, x0); }參數(shù)上要注意兩件事。第一rk是 32 個(gè) 32 位輪密鑰加密時(shí)正序解密時(shí)rk.Reverse()即可不需要另寫一個(gè)解密函數(shù)。第二最后輸出必須反序x3 x2 x1 x0這是標(biāo)準(zhǔn)里寫死的反變換很多人在這卡一下午因?yàn)榧用芙Y(jié)果看著“像那么回事”只是每個(gè)塊都對不上。3.3 分組模式與填充ECB 之外還得有 CBC 和 PKCS7單分組函數(shù)只是零件實(shí)際報(bào)文長度很少正好是 16 的倍數(shù)所以要有模式和填充。ECB 實(shí)現(xiàn)最簡單但同樣的明文塊會(huì)得到同樣的密文塊圖片、表格類數(shù)據(jù)一眼就能看出結(jié)構(gòu)業(yè)務(wù)上一般不允許用。CBC 更常見public static byte[] EncryptCbc(byte[] key, byte[] iv, byte[] plain) { if (iv.Length ! 16) throw new ArgumentException(CBC 的 IV 必須 16 字節(jié)); byte[] padded Sm4Padding.Pkcs7(plain, 16); // 補(bǔ)到 16 的倍數(shù) byte[] cipher new byte[padded.Length]; byte[] prev (byte[])iv.Clone(); uint[] rk ExpandKey(key); byte[] block new byte[16]; for (int i 0; i padded.Length; i 16) { for (int j 0; j 16; j) block[j] (byte)(padded[i j] ^ prev[j]); // 先和上一塊密文異或 CryptBlock(rk, block, 0, cipher, i); Buffer.BlockCopy(cipher, i, prev, 0, 16); // 本塊密文成為下一塊的 prev } return cipher; }Sm4Padding.Pkcs7的邏輯是缺 n 字節(jié)就補(bǔ) n 個(gè)值為 n 的字節(jié)正好對齊時(shí)補(bǔ)一整塊 16 個(gè)0x10。這個(gè)“正好對齊也要補(bǔ)”的規(guī)則是解密時(shí)判斷填充長度的依據(jù)少補(bǔ)這一塊對方解出來的尾巴會(huì)被當(dāng)成數(shù)據(jù)。IV 每次加密都要換新的隨機(jī)值跟著密文一起發(fā)過去不需要保密但絕不能固定不變否則相同明文前綴的密文前綴也相同。注意CBC 只保證機(jī)密性不保證完整性。要防篡改還得在密文后面附加 SM3 或 SM2 的校驗(yàn)值或者干脆用 SM2 加密會(huì)話密鑰、SM4 加密數(shù)據(jù)的兩段式方案。4. SM2 關(guān)鍵鏈路曲線參數(shù)、ZA 值與密文排列4.1 曲線參數(shù)與密鑰對先把 BigInteger 的字節(jié)序捋順SM2 用的是 256 位素域上的橢圓曲線曲線方程、基點(diǎn)、階都是固定常量直接照標(biāo)準(zhǔn)抄進(jìn)Sm2Curve.cs。真正的坑不在參數(shù)在BigInteger的字節(jié)序C# 的BigInteger內(nèi)部是小端構(gòu)造函數(shù)默認(rèn)還帶符號(hào)位而國密的所有數(shù)據(jù)都是大端無符號(hào)定長。// 定長 32 字節(jié)大端輸出左側(cè)補(bǔ) 0 補(bǔ)齊 internal static byte[] ToFixed32(BigInteger v) { byte[] raw v.ToByteArray(isUnsigned: true, isBigEndian: true); if (raw.Length 32) return raw; byte[] result new byte[32]; Buffer.BlockCopy(raw, 0, result, 32 - raw.Length, raw.Length); return result; } // 反過來讀的時(shí)候也要聲明無符號(hào)大端否則最高位為 1 會(huì)變成負(fù)數(shù) internal static BigInteger FromFixed32(byte[] buf, int offset) new BigInteger(new ReadOnlySpanbyte(buf, offset, 32), isUnsigned: true, isBigEndian: true);ToFixed32里那個(gè)補(bǔ)零動(dòng)作不能省。橢圓曲線坐標(biāo)偶爾會(huì)出現(xiàn)高位為 0 的情況概率大約 1/256如果直接ToByteArray輸出會(huì)少一個(gè)字節(jié)長度變成 31對方解析直接報(bào)錯(cuò)。這種概率性錯(cuò)誤最難排查本地跑一百次都好上線跑一萬次報(bào)一次。密鑰對生成就是取一個(gè)[1, n-1]的隨機(jī)數(shù)當(dāng)私鑰再算d * G得到公鑰點(diǎn)public static (BigInteger d, byte[] publicKey) GenerateKeyPair() { BigInteger d; do { d Sm2Curve.RandomScalar(); } while (d.IsZero || d Sm2Curve.N); var (x, y) Sm2Curve.MultiplyG(d); // 未壓縮點(diǎn)格式04 || X(32) || Y(32)共 65 字節(jié) byte[] pub new byte[65]; pub[0] 0x04; Buffer.BlockCopy(ToFixed32(x), 0, pub, 1, 32); Buffer.BlockCopy(ToFixed32(y), 0, pub, 33, 32); return (d, pub); }公鑰點(diǎn)的序列化格式有三種未壓縮04||X||Y65 字節(jié)、壓縮02/03||X33 字節(jié)、純裸X||Y64 字節(jié)。不同系統(tǒng)默認(rèn)值不一樣聯(lián)調(diào)前先問清對方用哪種或者干脆在庫里三種都支持讀的時(shí)候看首字節(jié)判斷。4.2 簽名與驗(yàn)簽ZA 值沒算對后面全白搭SM2 簽名和很多人熟悉的橢圓曲線簽名差別在于被簽的不是消息的哈希而是ZA || M的哈希。ZA是用戶標(biāo)識(shí)、曲線參數(shù)、公鑰點(diǎn)的哈希摘要作用是把簽名和具體身份綁定起來。這一步漏了或者用戶 ID 用了默認(rèn)值而對方用的是自己的驗(yàn)簽 100% 失敗而且失敗信息沒有任何提示。// ZA SM3(ENTL || ID || a || b || Gx || Gy || Px || Py) private static byte[] ComputeZa(byte[] userId, BigInteger px, BigInteger py) { int bitLen userId.Length * 8; // ENTL 是 ID 的比特長度2 字節(jié)大端 var ms new MemoryStream(); ms.WriteByte((byte)(bitLen 8)); ms.WriteByte((byte)bitLen); ms.Write(userId); ms.Write(ToFixed32(Sm2Curve.A)); ms.Write(ToFixed32(Sm2Curve.B)); ms.Write(ToFixed32(Sm2Curve.Gx)); ms.Write(ToFixed32(Sm2Curve.Gy)); ms.Write(ToFixed32(px)); ms.Write(ToFixed32(py)); return Sm3.Hash(ms.ToArray()); } public static (BigInteger r, BigInteger s) Sign(byte[] message, BigInteger d, byte[] userId) { var (px, py) Sm2Curve.MultiplyG(d); byte[] za ComputeZa(userId, px, py); // e SM3(ZA || M)再當(dāng)作 256 位大端無符號(hào)整數(shù) byte[] digest Sm3.Hash(Concat(za, message)); BigInteger e new BigInteger(digest, isUnsigned: true, isBigEndian: true); while (true) { BigInteger k Sm2Curve.RandomScalar(); var (x1, _) Sm2Curve.MultiplyG(k); BigInteger r (e x1) % Sm2Curve.N; if (r.IsZero || (r k) % Sm2Curve.N 0) continue; // 規(guī)范要求重取 k BigInteger s BigInteger.ModPow(1 d, Sm2Curve.N - 2, Sm2Curve.N) * (k - r * d) % Sm2Curve.N; if (s.Sign 0) s Sm2Curve.N; // C# 取模會(huì)保留負(fù)號(hào)必須手動(dòng)修正 if (s.IsZero) continue; return (r, s); } }逐段說明。ComputeZa里的所有長度都必須定長 32 字節(jié)少一位整體就變了所以統(tǒng)一走ToFixed32。默認(rèn)用戶 ID 是 16 字節(jié)的固定字符串很多系統(tǒng)的開放接口就是用它但私有協(xié)議經(jīng)常換成自己的 appId這一項(xiàng)必須和對方確認(rèn)。ModPow(x, n-2, n)是在求模逆因?yàn)閚是素?cái)?shù)費(fèi)馬小定理成立比手寫擴(kuò)展歐幾里得快也不用擔(dān)心邊界。s的負(fù)數(shù)處理是 C# 特有的一處。C# 的%運(yùn)算符對負(fù)數(shù)返回負(fù)值s.Sign 0時(shí)加一次n才能回到[0, n-1]。在 Java 或 Python 里寫習(xí)慣的人換到 C# 上很容易忽略這一點(diǎn)結(jié)果只有極少部分簽名是負(fù)數(shù)測試樣本少的時(shí)候根本發(fā)現(xiàn)不了。驗(yàn)簽就是反過來算檢查r、s是否在[1, n-1]算t (r s) mod nt 0直接拒然后算點(diǎn)(x1, y1) s*G t*P判斷(e x1) mod n r。4.3 加解密與密文順序C1C3C2 和 C1C2C3 的互相傷害SM2 加密產(chǎn)出的三部分C1是隨機(jī)點(diǎn)kGC2是明文異或 KDF 流C3是校驗(yàn)摘要。老版本標(biāo)準(zhǔn)把順序?qū)懗蒀1C2C3新標(biāo)準(zhǔn)改成C1C3C2兩套在現(xiàn)實(shí)系統(tǒng)里都還在用所以庫里一定要留一個(gè)開關(guān)。public static byte[] Encrypt(byte[] message, byte[] publicKey, bool c1c3c2 true) { var (x, y) Sm2Curve.DecodePoint(publicKey); // 04 || X || Y while (true) { BigInteger k Sm2Curve.RandomScalar(); var (x1, y1) Sm2Curve.MultiplyG(k); var (x2, y2) Sm2Curve.Multiply(new Point(x, y), k); byte[] t Kdf(Concat(ToFixed32(x2), ToFixed32(y2)), message.Length); if (t.All(b b 0)) continue; // 全 0 說明 KDF 失效規(guī)范要求重來 byte[] c1 Sm2Curve.EncodePoint(x1, y1); // 65 字節(jié) byte[] c2 Xor(message, t); byte[] c3 Sm3.Hash(Concat(ToFixed32(x2), message, ToFixed32(y2))); return c1c3c2 ? Concat(c1, c3, c2) : Concat(c1, c2, c3); } }KDF 是基于 SM3 的計(jì)數(shù)器派生internal static byte[] Kdf(byte[] z, int klen) { byte[] output new byte[klen]; for (int i 0, ct 1; i klen; i 32, ct) { // 計(jì)數(shù)器是 4 字節(jié)大端接在共享點(diǎn)后面一起哈希 byte[] h Sm3.Hash(Concat(z, new byte[] { (byte)(ct 24), (byte)(ct 16), (byte)(ct 8), (byte)ct })); Buffer.BlockCopy(h, 0, output, i, Math.Min(32, klen - i)); } return output; }解密的順序是先按配置把三段拆開用C1和自己的私鑰算出共享點(diǎn)(x2, y2)用同樣的 KDF 得到t異或回C2最后重算C3比對。C3比對必須用固定時(shí)間比較逐字節(jié)異或累加不要用SequenceEqual提前返回這類細(xì)節(jié)在安全審計(jì)時(shí)會(huì)被挑出來。5. 避坑與排查聯(lián)調(diào)現(xiàn)場最常見的五個(gè)問題這一章是整套實(shí)現(xiàn)里最值錢的部分。算法本身照著標(biāo)準(zhǔn)寫就行真正耗時(shí)間的是下面這些表現(xiàn)完全一樣、原因各不相同的問題。5.1 驗(yàn)簽一直返回 false但雙方代碼看著都“對”現(xiàn)象自測簽名驗(yàn)簽往返完全正常一旦換成對方給的公鑰就失敗把對方發(fā)來的簽名拿去驗(yàn)也失敗兩邊都不報(bào)異常只是布爾值 false。原因九成是 ZA 里的用戶 ID 不一致。默認(rèn) ID 是 16 個(gè)字節(jié)的固定串而對方可能用了自己的應(yīng)用標(biāo)識(shí)另一個(gè)可能是對方把ZA || M里的M先做了 Base64 解碼再哈希而你直接對字符串字節(jié)哈希。解決讓對方明確給出 ID 的原始字節(jié)不是 Base64不是十六進(jìn)制并且約定M到底是原始報(bào)文還是某種規(guī)范化之后的字符串。確認(rèn)后先用SM3(ZA)單獨(dú)對比一次把 ZA 的哈希值發(fā)給對方核對這比反復(fù)試簽名快得多。ZA 一致了簽名再不對才是曲線參數(shù)或s負(fù)數(shù)處理的問題。5.2 SM4 加密結(jié)果第一塊對、后面全不對現(xiàn)象16 字節(jié)以內(nèi)的短報(bào)文加密結(jié)果和對方一致一旦超過 16 字節(jié)第一塊密文相同第二塊開始全亂。原因CBC 的鏈?zhǔn)疆惢驅(qū)戝e(cuò)了。常見兩種寫法錯(cuò)誤一是用明文塊而不是密文塊作為下一輪的prev二是循環(huán)里prev更新寫在異或之前。解決把Buffer.BlockCopy(cipher, i, prev, 0, 16)放在CryptBlock之后、下一輪異或之前中間不要有別的賦值。驗(yàn)證方法是拿 32 字節(jié)的固定輸入手工用第一塊密文異或第二塊明文看結(jié)果是不是和內(nèi)部中間值一致。5.3 SM2 加密偶發(fā)“密文長度不對”重啟又好了現(xiàn)象接口大部分時(shí)間正常偶爾報(bào)密文長度異常日志里能看到長度是 96 或 98 而期望 97 或 112 之類的值。原因BigInteger.ToByteArray()輸出的長度不固定。坐標(biāo)高位為 0 時(shí)會(huì)少一個(gè)字節(jié)如果沒用isUnsigned: true最高位為 1 時(shí)還會(huì)多出一個(gè)0x00符號(hào)字節(jié)。兩種都會(huì)讓C1的長度在 64、65、66 之間抖。解決所有點(diǎn)坐標(biāo)輸出統(tǒng)一走定長 32 字節(jié)的轉(zhuǎn)換函數(shù)不要直接調(diào)ToByteArray。再在解碼側(cè)加一層防御讀到C1時(shí)按首字節(jié)判斷格式04未壓縮、02/03壓縮、其余按裸坐標(biāo)補(bǔ)齊別硬編碼固定偏移量。5.4 大量數(shù)據(jù)加密時(shí) CPU 打滿單條報(bào)文要幾十毫秒現(xiàn)象壓測時(shí) SM4 的吞吐還能接受但整個(gè)接口 RT 很高火焰圖顯示時(shí)間集中在 SM2 的標(biāo)量乘上。原因一次 SM2 加解密要做兩次點(diǎn)乘kG和kP樸素的雙倍點(diǎn)算法每次都做模逆模逆是這里面最貴的一步另外BigInteger是不可變類型循環(huán)里頻繁產(chǎn)生中間對象GC 壓力也上來了。解決把點(diǎn)運(yùn)算改到雅可比坐標(biāo)下做只在最后一步轉(zhuǎn)回仿射坐標(biāo)一次點(diǎn)乘的模逆從幾百次降到 1 次kG因?yàn)榛c(diǎn)固定可以預(yù)計(jì)算一張表做固定窗口加速。業(yè)務(wù)側(cè)更好的做法是不用 SM2 直接加密大報(bào)文改成 SM2 加密一把隨機(jī)的 SM4 密鑰數(shù)據(jù)走 SM4性能差距是數(shù)量級(jí)的。5.5 升級(jí)框架版本后簽名結(jié)果變了現(xiàn)象從舊框架遷到新框架同樣的私鑰、同樣的報(bào)文對方突然驗(yàn)簽失敗而自測往返還是通的。原因隨機(jī)數(shù)來源換掉了或者BigInteger的行為在新運(yùn)行時(shí)上有細(xì)微差異。更隱蔽的一種是把k寫成了固定值做“可復(fù)現(xiàn)測試”上線忘了改回去兩次簽名用了同一個(gè)k從本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
不卡免费av在线播放| 日本精品高清一二区一本到| 亚洲欧美九九| 人妖欧美一区二区| 97欧美精品综合| 亚洲性综合11| 人妻精品综合中文字幕在线| 久操国产在线| 国产免费一区在线观看| 蜜桃臀一区二区三区久久| 国产精品成人AV片免费看网站| 99ri在线视频| 色色97爱| 大香蕉九九| 亚洲天在线| 亚洲超碰AV| 欧美性爱一区二区三区四区| 欧美日韩另类在线播放| 美女91在线观看| 色图四区| 超碰日本97美女人妻人人玩人人爱| 尤物视频新赏网鲜网色诱网| 日日夜夜天天| 亚洲色图综合| 超碰激情808| www久久国产精品| 蜜臀久久在线视频| 久久HD| 欧美手机在线综合| 防屏蔽在线视频| 黄片www视频免费| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 欧洲与亚洲欧美精品中文字幕| 69精品| 校园春色综合| 亚洲一区二区三区中文字幕| 亚欧洲一区二区视频| 思思热在线cao| 久久精品视频一区三区小泽玛利亚| 欧美Aⅴ| 色色综合97| 日本韩欧美在线播放a| 天天天肏屄肏屄肏屄欧美欧美| 裸体美女国产免费久久久网站| 日韩情色一区二区| 爱爱久久| 久久精品人体AV| 伊人天天久久动态图| 啊啊啊好湿久久| 黄页网站免费高清在线观看| 天操天操夜操夜月操月年年操操| 亚洲97成人在线观看| 欧亚揄拍偷拍精品视频| 自慰白浆在线观看| 韩国免费播放一级毛片| 亚洲色综网| 国产超碰在线| 国产亚洲精品玖玖玖在线观看| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 伊欧美综合视频| 日韩大香蕉AV影片| 日日噜噜夜夜久久亚洲一区二区| 色婷婷丁香五月| 日本二区不卡| 97视频在线观看高清资源| 另类一区| 久久久一区二区三区三州| 一本色道久久综合亚洲二区三区| 成 人 影视 一区 二区 三区 四区| 97人妻免费中文字幕| 亚洲天堂一二| 国产久久一区二区三区野外在线| 久久久九九网站| 亚洲日韩人妻中文字幕一区| 久久成人东京热人妻| 国产精品一区二区三区在线密挑| 久久久久久日韩| 狠狠操使劲操| 日韩小电影| 天天综合网在线| 欧美日韩中文亚洲v在线综合| 欧美精品久久96人妻无码| 91模特在线观看| 久久久久久91香蕉国产| 久久9亚洲| 成人五月香网在线| 性爱1区| 亚洲国产欧美另类自拍| 另类图片综合| 青青青在线高清视频在线一二三四区| 人妻精品一区一区三区蜜桃91| 青青国产精品在线| 国产13区| 2025亚洲男人天堂| 96AV久久久| 青娱乐亚洲热| 蜜桃臀 后入 一区 二区 三区 在线| 约操熟妇| 在线观看黄色电话| 国产成人无码久久精品| 亚洲nv男人的天堂网| 久久性爱网站| 狠狠中文字幕| 一级黄色性爱A级片| 中文字幕五月婷婷免费| 成全在线观看免费观看| 26uuu国产亚洲综合| 91亚洲情色| 亚洲色91| 日韩啊V| 翔田千里A片一区二区| 亚欧美色| 亚洲国产综合图区中文字幕| 少妇熟女一区二区三区| 免费一级性爱久久| 91午夜无码| 新久久AV| 欧美一级A片不卡视频。| 再深点灬舒服灬太大了添视频 | 日韩猛交| 中文字幕一区二区三区四区在线视频| 综合久久六月久久婷婷| 91 亚洲 欧美 日韩 国产 综合| 色综合V| 日本久久女同性恋视频| 国产精品原创巨作?v网站| 综合久久少妇中文字幕| 国产啊v在线免费播放| 亚洲成a人片在线观看中文!!!| 无码av永久免费专区网站| 中文字幕交换人妻| 中文啪啪视频| 伊人亚洲综合| 国产青青综合伊人| jazzjazz国产精品麻豆| 99精品欧美一区二区三区桃色| 国产最新小视频在线播放下载 | 久久夜夜| A片三级无码| 国产大学生高潮在线播放| 性爱乱伦网址| 91老熟女逼| 91中文精品日韩欧美在线| 精品久一区免费| 日韩精品怡红院| 91日日夜夜| 俞拍久久国应视频| 亚洲av无码国产精品字幕| 五月天久久综合网| 狠狠综合网| 免费观看有码高清视频| 97频视在线| 99久在线精品99re8| 九九久久久| 老熟妇一区二区三区…| 狠狠色婷婷7777久| 欧美日动态视频| 99久草| www久久国产精品| 亚洲精品日日夜夜52| 精品女人999| 玖玖97综合| 蜜臀久久99'精品久久久| 一区二区三区看视频| 国产乱伦亚洲| 色五月综合| 97精品视频免费| 超碰美女97| 欧美亚洲素人制服精品| 91久久精品蜜臀| 久久久久9999妇女| 欧美91变态| 亚洲精品日日夜夜52| 日韩天堂av电影在线观看| 青青草五月份天| 中文字幕一区二区三区四区在线视频| 五月丁香色综合| 久欲AV| 岛国1区2区3区在线观看| 素人播放一区| 天天做天天爽| 日本熟女中文字幕一区| AV中文字幕三四五| 97超碰人操| 人人乐大香蕉| 国内外色色色色色成人视频| 天天干天天燥| 欧美一区二区三区互相| 精品国产乱码久久久| 日韩欧美丝袜诱惑| 亚洲第一二区另类图| 久久色情| 91色情黑丝搞鸡在线观看一区二区三区三州| 日韩免费在线观看不卡| 大香蕉草草| 热热色国产一二区AV| 99re不伦| 67194无码不卡| 国产亚洲99久久精品| 国产成年女人免费视频播放a| 国产精品久久久| 999国产精品999久久久久久| 神马久久久久眼| 久久大香蕉| 嫖老熟女A片一二三区| 福利社区午夜一区二区| 思思热免费在线视频| 九九热av| 中文字幕欧美日韩三级| 熟妇人妻精品一区二区| 亚洲色图91| 亚洲第一页色网| 91丝袜激情在线| 久久一二三级一一一| 欧美日不卡| http://qxhbdz.com| 爱爱动态120秒| 四虎影院成年人片| 亚洲高潮少妇| 国产伦精品一区二区三区视频女| 超碰97精品在线| 狠狠狠狠狠狠| 黄片在线免费在线观看| 午夜天堂精品久久久久91| 综合久久欧美| 国产白领连续中出在线观看| 国产农村妇女精品一二区| 蜜奶av| av情色影音| 91色鬼| 十八禁一区二区无码观看| 免费看污网址| 欧美 亚洲 另类 综合| 日韩精品99久久久久久中文字幕 | 少妇人妻无码| 操淫穴亚洲五月丁香| 欧美色偷拍 | 波多野结衣先锋影音| 亚洲免费成人精品电影| 狠狠狠狠狠干| 中国熟女网站| 2020中文字幕在线| 在线毛片片免费观看| 亚洲在线网站| av在线不卡一区二区三区| www久久国产精品| 亚洲小电影免费涩涩成人在线高清| 国产精品麻豆视频网站| 中文字幕在线免费观看视频| 麻豆区99999| 天堂综合| 亚洲高清视频在线免费观看| 一级特黄aaa大片在线观看成人一级片在线观看| 2018天天干在线视频| 簧片免费看视频| 少妇六月天| 精国久久一区二区三区98| 9精品久久久久| 青娱乐欧美激情一区二区| 亚洲av淫乱| 国产精品色| 亚洲伊人久久精品影院| 亚州男人天堂| www.久久| 欧美在线色| 久久久久九九九九| 97人人干人人操| av凤凰久久久| 精品乱码在线观看| 国产91亚洲精品一区二区三区| 最新国产亚洲精品精品国产亚洲综合| 青青国产在线拍揄自揄拍| 熟妇一区二区| 日韩在线观看字幕精品| 2025亚洲男人天堂| 五月天亚洲色图| 无码国产精品久久久久| 97视频在线视频| 亚洲欧美综合| 岛园激情| x97av| 日韩免费av片高清无码| 67194无码不卡| 久久久青青草| 99re视频在线观看这里只有精品| 人人操人人精品影片| 精品成人亚洲午夜电影| 天堂在线一区二区| 日韩免费三级黄片电影| 嫩草影院永久在线制服丝袜| 欧美真人抽搐一进一出gif | 日韩精品啪啪啪| 欧美日韩香蕉| 久久久99999久网站| 黑人美精品 A片| 婷婷美人网| 欧美区亚洲区偷拍区| 亚洲男人bt天堂| 91性网| 日本www操操操| 91男人天堂网| 国产人妻天天干精品| 欲色啪| 综合免费无码中文| 大香蕉日亚洲日本亚大| 亚洲激情综合| 日韩少妇无码| 中文字幕人乱码中文字的预防方法 | 人妻 丝袜美腿 中文字幕| 亚洲伊人久久精品狠狠在线| 97综合久久| 啊嗯好大视频在线观看| 天天射天天操天天干天天吃2018| 91nbbbbbb| 中日韩熟女| 亚洲天堂色图| 亚洲最新av无码成人精品区| 亚洲资源网| 国产超碰| 天天射天天操天天干天天吃2018| 999熟女精品| 黄片不用下载在线观看| 东北女人性交| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 狠狠色综合网| 欧美欧美啪啪视频| 啊啊啊啊啊好大好舒服想要| 久久‘黄片视频| 久久在肏| 操逼999| 欧美视频边做饭边橾| 起碰97| 玖玖综合色| 黄色激情电影在线观看| 深爱伊人影院| 亚洲中文字幕乱码无码一区二区 | 日逼五月天| 小情侣高清国产在线视频| 欧成人在线| 色综合潮| 99热在线播放| 国产精品无码av嫩草| 亚洲干B| 色婷婷激情| 欧美精品日韩久久久九| 超碰色图| 欧美亚洲首页| 欧美黑人91| 97综合在线观看| 日韩欧美成人综合在线| 强奸乱伦 亚洲一区| 色综合久久夜色精品国产天堂| 4399成人黄A片| 91深夜夜| 在线视频亚洲无码| 91美女视频在线观看| 亚州中文字幕超碰97| 日韩一级二级| 久久欧美性爱视频| 国产真乱mangent| 欧色网址| 久久精品99| 美女淫穴| 熟妇最新先锋一二三区| 九九成人| 欧美一级黄片免费播放| 人人人人插| 91精品人妻偷情| 国产美女91| 久久久草草精品| 不卡九肏| 色婷婷在线视频精品导航| 91色久| WWW黄片COM| 很黄很色的视频在线观看| 在线 欧美 亚洲| 免费97视频| 亚洲一区二区三区麻豆传媒| AND人妻系列| 久久乐| 丁香五月成人| 综合婷婷| 97色婷婷| 午夜激情床戏激情| 国产成人资源| 少妇诱惑视频| 欲色影视综合吧| 人妻在线中出视频| 色爱欲亚洲| 中文字幕视频一区视频二区| 大香蕉在线视频重口味毛片在线| 亚洲一区二区三区麻豆传媒| 99re99视频在线免费观看| 亚洲情色一区三区| 日本天天吊| 熟妇人妻一区二区三区| 蜜桃在线观看一区二区三区 | 视频在线97| 国产成人啪一区二区| 天天射夜夜| chaopen97久久| 久久久久久免费电影| 日本布卡一区二三区| 国产美女91| 人妻少妇精品久久久久久| 九九九九九九九九九九九九九九九女| 超碰欧美在线欧美| AV女资源| 五十路一区无码| 97在线视频免费观看| 啊啊啊啊啊啊好多水| 在线a亚洲视频播放在线| 日B操| 伊人久久大香线蕉无码| 99热超碰在线| 在线天堂999| 日本黄色XXX| 熟妇人妻精品一区二区| 东京热一区二区中文字幕| 天堂а√在线最新版在线| 日本无码1| 东京热亚洲一区二区| 久久99国产综合精品女同| 亚州综合图片| 超碰色图| 亚洲国产婷婷在线播放| 亚洲色人妻综合| 欧美72网页| 超碰色97| 亚洲AV无码翔田千里网站| 无套内射性感少妇视频| 艳美熟妇先锋一二三区| 欧美激色| 色哟哟AⅤ| 亚洲九月丁香| av麻豆啪啪| 麻豆一区二区AV天美| 日韩av电影成人在线| 欧美一级A片在线看视频性色| 欧美日韩国产在线| 日本国产二线女色| 日本国产亚洲一区在线观看| 日韩成人免费电影| 欧美日韩亚洲高清不卡一区二区三区| 18精品一二区| 亚洲一区操| 欧美中出1| 无码人妻精品一区二区三区九九| 夜夜精品视频| 亚洲一区日韩| 五月天综合网| 欧美狠狠干| 亚洲欧综合另类无码一区| 亚洲欧洲另类| 91欧美巨乳| heyZO天然素人无码AⅤ专区| 蜜臀久久一区二区| 美女天天干| 女同性恋久久| 射丝袜大香蕉| 嫩草影院在线观看精品| 桃色六月天| 熟妇乱伦一区二区| 欧美日韩国产在线| 久久二| 色婷婷九月| 欧美一区二区日韩传媒搭讪精品| 精品人妻中文字幕高清| 91天天日| 久久午夜鲁丝片| 久久久久9久久久久| 97精品网| 欧插网站| 超碰国产精品无码| 日韩情色AV| 岛国激情视频软件| 91N综合在线| 无码人妻一区二区三区色欲aⅴ| 啊啊啊啊啊在线观看网址 | 五月婷婷性爱| 美女久久久久久久久久久| 天天流夜夜操| 美女91AV| 久久九七| 久久人人爽爽人人爽人人片αV| 亚洲日产专区婷婷| 人人做人人妻人人夜视频| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 丝袜熟女2P| 色香天天| 国产精品视频播放| 久久九九视频九九视频| 国产午夜福利视频在线| 日本一级婬片试看三分钟| 综合91网| 色色色99| 91精品人妻偷情| 久久久久久久久久久久九| 亚洲乱伦图片视频| 亚洲骚逼少妇| 四月丁香婷婷| 国产精品久久久久久片| 成人九九| 99视频自拍| 久久久久久精| 欧美A√综合网 | 欧美夜夜草视频| 农村妇女精品一区二区| 日韩99精品视频综合区 | 五月天成人综合| 激情综合网亚洲| 国产和美国毛片| 97在线视频观看| 九九操久久国产免费视频| 97色97好| 综合色色网| 日韩熟女操逼| 久久激情视频| 91在线丝袜视频| 无码国产精品午夜不卡(| 成全动漫视频观看免费下载| 亚洲性感丝袜诱惑在线观看| 精品99999久久久久久| 国产女人和拘做爰视频 | 五月婷婷六月激情| 日韩精品一区二区日韩| 国产精品高潮久久久无码| 亚洲熟女乱色一区二区三区久久久 | 成人看片网站| 色哟哟511老熟女| 男人天堂网站| 正宗无毛一线天嫩逼| 熟妇精品juliaannAV| 九九色影院| 国产三级多多影院2022国产AA一级毛片无码 | 国产乱弄免费在线视频。| 五月丁香综合激情| 久久国内| 成人免费毛片| 婷婷伊人五月| 久久久无码视频| 青青草原av| 色综和网| 99热 按摩 日韩| 国产熟女少妇一区| 大香蕉免费中文| 久久肏大逼| 精品免费一区| 十八禁黄色| 一区二区三区色综合| 级品肉射| 九九热视频这里只有精品| 国产四虎在线| 久久手机视直播| 日韩人妻资源网| 婷婷综合在线| 国产欧美日韩在线观看麻豆传媒公司 | 亚洲欧美天堂在线| 午夜天天碰综合视频| 91无码中出人妻视频| 免费看久久久性性| 九月色婷婷| 日韩一级片在线看| 99人人干| 激情五月天视频| www.婷婷| 欧美性爱97超碰| 免费农村成人少妇人妻Aa一区二区视频| 色色福利| 色五月婷婷五月天| 精品久久一区二区三区四区五区| 超91综合网| 精品精品精品| 18岁禁 茉莉成人久久| 天天综合网91入口| 国产精品天干天干综合网麻豆| 91高跟美女在线播放| 亚拍在线| 亚洲中文sv| 屁股久久久久久| 国产精品人妻无码久久久老鸭窝| 老外又粗又长一晚做五次| 最新国内自拍av免费| 很黄很色的视频在线观看| 国产极品精品美女视频| 麻豆国产免费影片| 屌逼传媒| 日本999精品| 物业黑人 AV一区| 亚州综| 五月亭亭六月丁香| 中国zzijzzijzzwww精品| 乱欲一区二区| 午夜情侣自拍网站| 亚洲熟久久| 久久一级无码精品毛片6| 欧美双插| 日韩欧美日韩| 国产操逼逼网| 成人资源中文字幕在线观看天天| 极品后入免费视频| 97在线亚洲| 我要去看2个日本美女.com曹逼| 精品人体无圣光凹凸| 亚洲色五月| 亚洲美欧999| 欧美性高潮| 婷婷久久五月综合激情| 操婷婷逼| 91久久18禁| 中文 人妻 制服| 中字幕人妻一区二区三区| 婷婷激情五月天小说网| 婷婷激情五月天小说网| 在线洲亚线| 性色生活片久久毛片婬片免费放女人一级毛片| AV污污污污| 久草色悠悠在线视频| 欧美极品色| 日韩精品一区二区高清| 日本东京热加勒比久久| 国产精品久久久久绯色| 97av,com| 国产对白刺激视频| 九九热精品在线| 欧美韩日精品资源| 青娱乐黄色录像| 国产精品成人福利在线| 久久久不能久久久久| 日韩BBN| 欧洲特黄毛片免费看欧洲毛片| 精品欧美А∨无码黑人大荫蒂| 香蕉在线一区二区三区| 国产超碰97| 性爱视频无打码在线观看| 日韩国语字幕| 97碰久久| www.色99| 九九九九亚洲| 免费黄色A片| 国产高清在线自在拍69| 国产不良强奸视频免费看| 一道本东京热加勒比一区二区三区 | 一直超碰| 黄视频免费| 少妇与黑人高潮在线| 亚洲全色网| 天美传媒av 在线| 校园春色 亚洲| 99综合免费视频| 中文字幕色AV| 激情五月天视频| 精品人妻一区二区三区蜜桃视频| 亚洲AV无码成人精品久久| 欧美性生活内射| 久久成人国产| 欧亚揄拍偷拍精品视频| www黄片免费看com| 99热精品国产| 免费看国产曰批40分钟怎么下载| 亚洲图片 激情小说| 人妻少妇被猛烈进入中| 久久久96精品| 天美麻花大全视频| 羞涩视频| 91亚州欧美| 性在久久久久久| 久久综合久色欧美综合狠狠| 日本日皮视频逼| 東南亚性呦成人伦理资源在线视频| 亚洲黄色影视| 97精品一区二区三区免费| www老逼91| 欧美一二三级精品在线| 风骚少妇视频中文字幕| 亚洲图片偷拍视频区| 欧美97爱| 六月丁操逼| 天天色综亚洲91污| 九久久精品| 无码人妻一区二区一牛影视| 操逼天美3区| 97爱啪| 97人肏| 95自拍视频在线观看| 四虎影视国产精品| 免费视频在线观看啊啊啊啊啊| 国产一区二区免费福利片| 欧洲亚洲天堂精品| 日本 欧美 亚中文字幕| 青娱乐福利99| 久久风骚城市人| 综合色图亚洲欧美| 综合欧美激情网| 亚欧洲日韩国产精品| 久草新免费| 亚洲欧美国产其他二区| 亚洲 无码 偷拍| 久九9精品| 精精夜夜| 午夜.DJ高清在线观看免费7| 国产日韩美女小穴视频网站不卡| 99综合自拍| 亚洲综合九九| 夜夜天天噜狠狠爱2021| 97超碰中文在线| 亚洲精品久久久久久| 欧美色三级片91| 亚洲成人久久美女| 襙一襙| 懂色Av一区二区三区| 久久久av爱| 婷婷五月天补不补| 欧美成人性爱视频免费观看| а√天堂资源官网在线资源| 97在线资源| 欧美老妇综合网| 亚洲日产专区| www成人啪啪18秘 免费| 天天操天天射天天日| 天天操天天舔| 欧美精品系列| 91国产美女丝袜足交精品视频 | 亚洲成人在线资源| 成人在线午夜视频一区| 午夜福利久久久噜久噜久久综合| 人人操AV| 偷窥自拍A片| 十八禁成人网站在线观看| 在线视频资源| 婷婷九月丁香| 一区二区三区四区在线不卡| 欧美日韩少妇色情| 久久欧洲| 97综合在线观看| 伊人久久88国产女| 99在线精品观看99| 欧美激情性久久久久久| 一区二区三区免费视频入口| 亚欧美色| 欧美男人天堂| 东京热综合久久一区二区| 欧美综合天堂| 国际精品久久久| 青青五月天| 啊啊在线| 天天综合官网| 超碰九区| 国产在线观看一区二区三区| 蜜臀99久久精品久久久懂爱| 97欧美视频| 人妻铁牛TV| 久久精品国产Aⅴ| 东京热男人的天堂| 另类天堂| 男女啪啪网站免费视频| 国产一级舔足在线观看| 综合亚洲欧美精品日韩?v| 久久后入制服| 欧美日韩不卡传媒| 九九九九免费| JIZZJIZZ亚洲女人被躁| 国产一级内射无挡观看| 黄片国产精品一区二区| 丝袜美腿制服人妻二区中文字幕| 亚洲日韩精品一区视频在线| 激情专区综合| 亚洲欧美精品一区天堂久久| 日本不卡三级网在线播放| 久久久久一本一区二区青青蜜月| 精品久久久不卡一区二区| 97久久天天综合色天天综合色电影| 超碰4A| 啊啊啊无码| 熟女乱伦A| 国产超碰| 粘花网06av视频| 人澡逼| 久久久偷拍| 国产传媒午夜理伦精品| 日韩亚洲中文有码视频| 久久xx| 日本精品88888888| 人妻天天爽夜夜爽2| 上床啊啊啊| 交换娇妻呻吟声不停中文字幕| 亚洲中文一区二区三区| 久久久久久亚洲精品不卡人乳| 97视频在线免费看| 精品久操| 国产午夜精品理论片一二三区区| 欧美日韩性爱无码| 日韩性爱小视频在线观看 | 狠狠婷婷亚洲中文综合久久| 隔壁邻居波多野结衣中文字幕| 色狠狠综合| 五月丁香影视| 久久久久久少妇| 91色综合| 日本理论在线| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 无码137片内射在线影院| 日韩精品 视频一区二区| 98一区二区精品| 96久久久精品| 岛国在线国产| 亚洲色色色| 日韩丨制服丨中文|在线| 日本操逼aaaaa| 国产 码在线成人网站| 亚洲少妇在线影音| 人妻人久久精品中文字幕| 色波多| 狠狠综合网| 后入福利视频| 免费αV在线视频| 污啪啪啪视频| 国产97av| 肉嘟嘟www视频在线观看高清| 狠狠图片青青草| 激情综合网激情综合| 免费人成?大片在线播放| 新视频sss国产| 久久久久九九九九| 欧美淫穴| 久操电影网| 制服乱伦| 97超碰欧美手机在线| 人人操,人人插| 青青草亚洲一区| 99热这里都是精品| 亚洲激情网| 亚洲日精品| 日韩人成网站在线播放| 亚洲成人妻日韩在线| 1人人看人人摸人人操| 亚州综合电影| 日韩性爱小视频| 黑丝少妇麻豆| 亚洲伊人久久综合97| 黄色成品网站| 99超碰碰| 成人婷婷丁香| 国产白丝精品在线观看| 91在线页| 日韩欧洲操屄视频| 亚熟在线| 中文字幕一区二区三区高清| 亚洲宗合网| 久久亚洲AV无码专区首页| 少妇99| 欧美日韩 强奸乱伦| 不卡六六在线91| 午夜影美女日鸡鸡天天视频国产 | 久久久国产成人一区二区三区在线| 97一区二区三区视频| 日本操逼视频导航| 日本黄页视频在线观看| 99久久网站| 亚洲熟女av中文字幕| 99热综合| 国产超碰AV在线精品| 欧美97日韩| 午夜福利视频在线一区| 男人的天堂1024| 亚洲AV无码天美传媒一区| 欧美AAAA黄片| 97天天操天天干| 在线可观看的黄色网址| 欧美91精彩| 制服乱伦| 人人弄人人摸| 色男人色天堂东京热| 桃花色涩综合影院| 97视频免费在线| 97天天爽| 综合操逼| 欧美色干| 婷婷15月天青娱乐| 久久久久国产无av| 日韩免费中文字幕视频| 熟女91网| 日韩另类色图| 多乙久久久久久| 99热这里都是精品| 情色av电影| 日本精品第一视频在'| 富女玩鸭子一级毛片| 欧美在线视频播放| 久久女人一区二区三区| 国内毛片欧美香蕉精品| 欧美91色| 操人妻逼91| 中文字幕一区日韩精| 欧美日韩性爱电影在线| 伊人在线大香蕉二。| 91丨国产丨白浆| 精品一区二区成人动漫| 乱伦日本中文自拍| 嗯嗯不要视频| 997色在线| 97久久超碰国产网站| 天天干天天做| 强奸乱伦大香蕉| 免费观看成人www精品视频| 噜噜噜亚洲精| 美腿丝袜高跟网免费视频免费视频| 天天操夜夜操| 乱伦1色页| 人人做天天爱| 精品一级毛片在线观看| 超碰9 7女人| 精品国产乱码久久久兰草影视| 色五月大香蕉| 人人插人人搞人人操| 岛国色情视频在线观看| 亚州欧美色图| 玖玖久久久| 美日韩在线不卡人妻| 欧美九九99久久精品| 成人在线视频二区| 国内三级自拍小视频在线观看 | 黄页大片在线观看| 五月丁香在线| 大香蕉免费乱伦视频| 欧美少妇性爱网站| 超碰在线观看av不卡| 精品国产Av无码久久久伦古装 | 久久久久性熟视频| 91久操| av中文在线| 成人黑料社久久| 午夜免费福利视频一区| 日本日皮视频逼| 久久夜黄色无码A级大片| 色网在线视频观看免费| 人人操人人插 - 百度 - 百度| 精品欧美老熟女一二区| 91亚洲高清| henhen91| 一区二区三| 精品视频一区二区| 五十路三区在线| 国产强奸乱伦第1页| 丰满人妻一区二区三区四区| 欧美国产婷婷久久| 黄色大片视频在线免费看| 天美传媒AV在线播放| 九七超碰| 亚洲熟女人妻中文字幕一区二区| 蜜桃久久一区二区| 日韩成人高清一区二区| 成人精品无码| 26uuu欧美日韩| 无码av永久免费专区网站| 国产精品麻豆视频网站| 五月天玖玖资源站| 强奸乱伦av电影| 五月丁香激情啪啪| 韩国女主播青草福利视频| 99热这里只有精| 98精品国产乱码久久久久久| 中文字幕av丝袜| 97视频免费在线| 中欧人妻丝袜中文字幕| 人妻夜夜爽天天爽三区麻豆AV网站| A片大香蕉在线| 欧美黄片欧美黄片xxx| 天天操天天舔| 国产青一二三| 加勒比人妻综合| 国产国产亚洲一二三久久| 欧美天天| 免费伦费视频在线观看| 狠狠综合网| 一区二区 电影 亚洲| 超碰97久久国| 91青青草| 日本色色色视频| 91丨九色丨大屁股| 男人的天堂色偷偷青青草视频婷婷网| 久久 久久国内精品亚洲 | 东京热亚洲一区二区| 国产熟女| 综合网亚洲1| 日本中文字幕不卡视频| 天天干天天狼在线视频| 中文字幕二区日韩天堂| 精品美女少妇一区二区三区| 美性中文综合网| 欧美亚洲今日在线| 国产精品一区二区校花| 久久丁香五月婷婷| 亚洲污一污二| 91人妻在线视频| 国产理论视频在线播放| 日本曲间由美性生活片| 日韩国产九九精品一区二区三区毛片| 成人性交午夜免费片| 俄罗斯一区二区视频在线观看| 99热在线播放| 蜜臀久久在线视频| 91bbb| 日本高清免费一本视频在线观看| 九九色逼| 999九九精品| 九九AV| 午夜人妻精品综合在线| 九九免费影片| 日韩熟女操逼| 欧美美女啪啪视频| 精品夜夜澡人妻无码AV| 99这里只有精品国产| 91在线欧色| 日韩精品-原创伙伴| 亚洲导航深夜福利| 中文在线久久字幕| 尤物网站91| 精品久久99| 九九九只有精品| 国产精品久久久久中文字幕| 亚洲人成色9999精品久久| 久热伊人| 日本久久天堂| 国产女主播视频在线观看| 亚洲字幕一区二区| 亚洲视频一二区| 久久久蜜桃臀无码视频| 99亚洲精品| 怡红院成人视频| 久久免费精品视频免一| 搡老女人老91妇女熟女| 日本不卡高清视频| 丝袜喷水在线| 伊人欧美大香蕉视频| 久久性爱网站| 国产精品久久久久久久久久二区三区| 欧州一区二区三区四区| 亚洲欧洲视频小说在线观看| 国产精品乱码久久| 色噜噜人妻丝袜a∨先锋影| 欧美情色贴图| 大香蕉久| 人妻少妇久久| 首页中文字幕中文字幕免费| 久久精品99| 性爱av在线免费观看| 国产日韩中文字幕欧美| 天天天天天干夜夜夜夜夜操| 国产尤物在线三区| 色色五月丁香| 国产精品操| 91殴美大片| 国产精品福利视频播放| 婷婷15月天青娱乐| 午夜欧美女人操逼| 欧美高清在线| 熟女精品一区二区三区| 干超碰碰熟女| 欧美一区二区情色| 日本三级A片网站com| 久久九操在线观看| 亚洲乱码尤物193YW| 天天日天天干天天摸天天操| 黄污污污污| 97视频网站| 久久久久78| 日本在线激情一区二区三区| 竹菊一区二区三区AV线| 久热伊人99re| 国产免费操逼| 亚码人妻| 开心五月激情网| 欧美视频一| 亚洲一区亚洲天堂| 人人色人人操在线| 大学生美女口爆| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 黑人操一区二区| 日韩精品 欧美激情| 少妇与黑人高潮在线| 极品销魂美女一区二区| 很很很很操| 蜜臀av在线播放一区二区三区| 强奸国产精品视频| 美女上床网站| 黑人中出21连凳花野真衣| 91精品无码人妻系列| 欧美性性性| 美女黑人91神马| 欧美 亚洲 综合 制服| 国产精品久久久久久久久久梁医生| 天天综合站| 国产传媒美日韩av| 婷婷中文网| 欧美日韩插逼视频| 一区二区三区麻豆| 高潮综合网| 少妇超碰在线| 爱av免费| 91影库| 天天久久| 91在线丝袜| 欧美性爱网97| 欧美精品久久久久久久久88| 久久这里只精品免费福利| 熟妇人妻精品一区二区| 99999这里都精品| 久久国产精品91| 色婷婷基地| 欧美劲爆视频一区二区| 国产在线观看一区二区三区| 伊人欧美大香蕉视频| 欧美综合网1| 人人澡综合涩| www.色婷婷.com| 国语对白露脸XXXXXX| 91蜜臀人妻中文字幕在线| 欧美熟女妇同| 人妻出轨一区二区三区| 欧美亚洲综合色| 人人操人人摸人人看人人干| 日韩成人无码| 少妇久久久久久久久| 青青操日韩| 天堂综合| 超碰97久久国| 亚洲男人的天堂网| 97色婷婷| 99热网站| 色色五月婷| 大香蕉520| 久久久久国产一区二| 91国产丝袜白虎| 大香蕉乱级| 色图四区| 亚洲骚逼少妇| 97视频播放| 久久夜夜夜夜| 久久久av爱| 欧美性爱一区| 狠狠夜色午夜久久综合在线| 国产suv精品一区二区四| 精品国产乱码久久久久久久久1| 亚洲激情AV| 日本三级一区二区 在线| 日本成人A片网站| 91午夜无码| 少妇高潮对白在线观看| 乱伦色图网址是多少| 中文字幕一二区二三区人妻专区| 日韩性爱视频在线免费观看| 97爱综合| 在线播放成人高清免费视频| 国内毛片热久久思思热| 午夜超爽| 天天草夜夜草高潮片| 国产女人操逼视频| 日韩成人综合网| 99少妇精品视频|