• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于QR碼低復(fù)雜度信息隱藏方案

    2019-09-05 05:47:58楊舜同趙慶蘭
    西安郵電大學(xué)學(xué)報 2019年3期
    關(guān)鍵詞:掩碼份額秘密

    鄭 東, 楊舜同, 趙慶蘭

    (西安郵電大學(xué) 無線網(wǎng)絡(luò)安全技術(shù)國家工程實驗室, 陜西 西安 710121)

    快速響應(yīng)碼(quick response,QR)[1-3]是二維條碼的一種,已廣泛應(yīng)用在印刷、在線廣告、移動支付及互聯(lián)網(wǎng)商務(wù)等各個方面[4]。但是,QR碼缺乏足夠的安全保護[5],存儲在后端數(shù)據(jù)庫的網(wǎng)絡(luò)鏈接直接暴露,會造成許多潛在的安全風(fēng)險[6]。因此,QR碼的信息安全隱私問題引起了越來越多學(xué)者的重視。

    目前,保護秘密數(shù)據(jù)主要是利用圖像隱藏[7-10]方案、水印技術(shù)[11-14]、秘密共享方案[15]及信息隱藏方案[16]。圖像隱藏方案是將QR碼視為秘密圖像,然后將QR碼隱藏到封面圖像的特殊域[7-8]或頻域[9-10]中,對秘密QR碼進行保護。水印方案[11-14]利用離散小波變換[11]、離散余弦變換[12]和離散傅立葉變換[13]或直接調(diào)整QR模塊行和列的寬度[14],將水印嵌入到QR碼圖像的頻域或特殊域中,對秘密進行保護。秘密共享方案[15]是將秘密數(shù)據(jù)轉(zhuǎn)化為QR碼的形式進行存儲,但是,條形碼讀取器掃描QR碼時,很容易獲得秘密數(shù)據(jù)內(nèi)容。信息隱藏方案[16]利用QR特征將秘密嵌入QR碼的模塊中,并使用QR碼本身的糾錯機制將其隱藏,減少了秘密被發(fā)現(xiàn)的可能性。但是在被懷疑隱藏信息的場景下,存在著相同型號QR碼破解難度隨著隱藏秘密數(shù)量變少而降低的問題,并且當(dāng)QR碼被惡意篡改后無法恢復(fù)秘密。

    為了保護QR碼中的數(shù)據(jù)安全,本文設(shè)計一種基于QR碼低復(fù)雜度信息隱藏方案。通過直接修改QR的編碼模塊,利用用戶秘鑰控制的偽隨機發(fā)生器[17]生成位置序列,將秘密信息隱藏在QR碼的編碼過程中,再通過完成QR碼的編碼,得到隱藏信息的QR碼。該QR碼可以被掃描器正常讀取,授權(quán)用戶可以通過密鑰恢復(fù)出隱藏信息,而未授權(quán)用戶只能讀取QR碼的封面信息。

    1 QR碼

    QR碼[3-5]由白色和黑色兩種方形模塊構(gòu)成,分別代表0和1,通過2D矩陣表示。QR碼標(biāo)準(zhǔn)提供了40個QR版本,可編碼各種數(shù)據(jù),其中版本1容量最小,版本40容量最大。用戶使用的版本取決于字母數(shù)字、二進制、漢字或其組合編碼的數(shù)據(jù)量以及糾錯級別。另外,QR碼非??煽啃?,即使條形碼的部分臟污或損壞,也可以正確地讀取數(shù)據(jù)。

    QR碼主要由功能標(biāo)識區(qū)域和編碼區(qū)域組成,周圍由空白區(qū)域包圍。以QR碼的版本7為例,結(jié)構(gòu)如圖1所示。

    圖1 QR碼的組成

    功能標(biāo)識區(qū)域由定位標(biāo)識、分隔符、定時標(biāo)識和校正標(biāo)識組成。除右下角以外的每個角落,有3個相同的定位標(biāo)識,主要識別QR碼并確定QR碼的旋轉(zhuǎn)方向;分隔符是寬度為1的白模塊構(gòu)成的白色點帶,用于將編碼區(qū)域和定位標(biāo)識分開;定時標(biāo)識是寬度為1的黑白交替點帶,起始和結(jié)束均為黑色模塊,用于指示標(biāo)識密度和確認(rèn)坐標(biāo)系;校正標(biāo)識,用于進一步校正坐標(biāo)系,只有版本2以上的QR碼才有,不同的QR碼版本具有不同數(shù)量的校正標(biāo)識。

    編碼區(qū)由格式信息、版本信息及數(shù)據(jù)和糾錯碼組成。版本信息僅存在于版本7及以上版本,數(shù)據(jù)和糾錯碼是由數(shù)據(jù)碼字和糾錯碼字組成。數(shù)據(jù)碼字是消息數(shù)據(jù)編碼的編碼塊,大小都為8位。糾錯碼字則是基于QR碼版本和糾錯級別,將碼字劃分為多個糾錯塊,再為每個塊生成適當(dāng)數(shù)量的糾錯碼字。如果部分模塊臟污或損壞,糾錯功能也可以正確解碼消息。

    QR碼采用Reed-Solomon錯誤控制編碼[17]進行錯誤檢測和糾正。用戶可以選擇L、M、Q和H等4種錯誤糾正級別,如表1所示。每個級別提供不同的糾錯能力,更高的糾錯級別具有更好的糾錯能力,但也會增加要編碼的數(shù)據(jù)量。

    表1 QR碼糾錯級別

    QR碼的編碼過程主要分為以下3步。

    (1)生成數(shù)據(jù)塊。數(shù)據(jù)碼字使用交錯的方式編碼,糾錯碼字附加到數(shù)據(jù)碼字序列的末尾,可以盡量減少因局部損壞而導(dǎo)致QR碼變得不可解碼的可能性。

    (2)填充QR碼圖像,并根據(jù)QR碼標(biāo)準(zhǔn)[3]計算掩碼類型并添加掩碼。在對數(shù)據(jù)碼字進行編碼之后,將平衡白和黑模塊的掩碼應(yīng)用于編碼區(qū)域。掩碼類型總共有8種(0~7),選擇合適掩碼類型能減少可能會混淆QR碼閱讀器的不良圖案。

    (3)添加格式信息和版本信息。

    2 信息隱藏與秘密共享

    利用QR碼的特征,可以將秘密信息隱藏在QR碼模塊中,從而實現(xiàn)秘密共享,隱私保護等應(yīng)用。

    2.1 信息的隱藏

    秘密信息隱藏容量由QR碼的版本和糾錯級別控制,并且根據(jù)隱藏的信息加上糾錯碼后的最大長度確定QR碼的版本和糾錯級別。信息隱藏就是根據(jù)隨機位置信息序列LN,確定QR碼中秘密信息的隱藏位置,而位置信息序列LN則由用戶設(shè)置的密鑰確定。信息隱藏的具體步驟如下。

    步驟1 使用用戶密鑰生成隨機種子key。

    步驟2 根據(jù)種子key生成范圍為(0,c)且長度為2c的隨機序列,c為碼字總數(shù)。

    步驟3 刪除隨機序列中的重復(fù)項并獲取前r個數(shù)據(jù),r為糾錯能力。

    步驟4 遍歷所有(r,i)項,i為大小為8的QR碼單個編碼塊中的位置,0≤i≤7。

    步驟5 使用種子key控制的偽隨機發(fā)生器,混淆r×8個條目,得到位置信息序列LN={L1,L2,…,Ln}(0

    步驟6 對QR碼的封面數(shù)據(jù)m執(zhí)行QR碼編碼程序,直到生成數(shù)據(jù)碼MQR為止。

    步驟7 根據(jù)需要隱藏的秘密信息長度,利用Reed-Solomon糾錯碼標(biāo)準(zhǔn)[18]分別為每個隱藏信息計算糾錯碼,并加到每個秘密信息后得到秘密序列SN。

    步驟8 根據(jù)位置信息序列LN,在數(shù)據(jù)碼MQR中嵌入秘密序列SN。

    步驟9 將隱藏秘密數(shù)據(jù)塊繼續(xù)QR碼的編碼過程,根據(jù)QR碼標(biāo)準(zhǔn)計算掩碼類型并添加掩碼,完成QR碼的生成。

    根據(jù)QR碼的編碼過程,由步驟1~步驟5生成的隨機位置信息序列LN,將信息嵌入QR碼塊中,進行QR碼的正常編碼,最后計算掩碼模式類型并添加掩碼,完成QR碼生成。生成的隱藏QR碼更加自然,可避免引起攻擊者的懷疑。

    2.2 隱藏信息的恢復(fù)

    相同的偽隨機發(fā)生器使用相同的種子key,生成的位置信息序列LN也是相同的。因此,只要用戶知道密鑰就可以在本地生成隨機位置序列LN。在掃描和解碼過程中,根據(jù)位置信息序列LN可以簡單的實現(xiàn)秘密信息的讀取,在QR碼掃描器中,計算復(fù)雜度低。隱藏信息恢復(fù)的具體步驟如下。

    步驟1 掃描QR碼得到數(shù)據(jù)塊糾錯之前的信息。

    步驟2 根據(jù)信息隱藏的步驟1~步驟5,計算隨機位置信息序列LN。

    步驟3 通過位置信息序列LN中每一項的(r,i),直接讀取隱藏后的QR碼編碼塊,獲得秘密序列SN。例如LN第1項為(8,1),即讀取QR碼第8塊的第2位。

    步驟4 根據(jù)秘密序列SN進行糾錯,并獲取隱藏的秘密信息。

    隱藏的信息會被QR碼本身的糾錯功能糾錯,因此,需要使用QR碼糾錯之前的數(shù)據(jù),對隱藏信息進行讀取,然后使用隱藏信息內(nèi)部的糾錯碼進行糾錯得到正確的秘密信息。

    2.3 秘密共享

    秘密共享[19]是將秘密劃分為n個秘密份額[20]。任何人都無法從自己的秘密份額中解密原始秘密。只有當(dāng)n個秘密份額中的任意k個或以上(k≤n)秘密份額在一起時,才能恢復(fù)秘密。秘密共享的過程如圖2所示。

    圖2 秘密共享過程

    秘密共享實現(xiàn)分為計算秘密份額和秘密份額恢復(fù)兩個步驟。

    根據(jù)(k,n)門限方案[19],選擇k(k≤n)作為門限,即有k個及以上用戶聚集可恢復(fù)秘密。設(shè)a0為秘密數(shù)據(jù),p(p≥a0)為大質(zhì)數(shù)。選擇參與者x1,x2,…,xn,其中n為參與者個數(shù),也是隱藏的QR碼標(biāo)簽的數(shù)量。構(gòu)造(k-1)次多項式,秘密份額[19]可表示為

    f(x)=a0+a1x+a2x2+
    …+ak-1xk-1(modp),

    其中a1,a2,…,ak-1∈Zp,Zp為有限域。因此,每個參與者的秘密份額可表示為(xi,f(xi)=yi)。

    在秘密恢復(fù)的過程中,任何從n個秘密份額中獲得的k個秘密份額,通過拉格朗日多項式插值[19]

    恢復(fù)秘密數(shù)據(jù)ao。參與者x1,x2,…,xn中任意k個參與者的秘密份額為(x1,y1),(x2,y2),…,(xk,yk)。

    得到秘密份額后,將n個秘密份額通過信息隱藏步驟隱藏到n個QR碼中,只有持有其中k個及以上QR碼并持有各自秘密份額的情況下,才可以通過秘密恢復(fù)步驟恢復(fù)秘密S。

    3 仿真結(jié)果分析

    利用PYTHON語言,基于LINUX操作系統(tǒng)的仿真環(huán)境進行實例仿真。使用Mersenne twister算法[21]作為偽隨機發(fā)生器,并均使用版本1糾錯級別H的QR碼作為仿真對象,實現(xiàn)QR碼的信息隱藏及恢復(fù)的過程和秘密共享,驗證方案的可行性和適用性。

    3.1 實例仿真及結(jié)果分析

    以(3,4)為例,實現(xiàn)秘密共享。假設(shè)多項式f(x)=1+2x+x2(mod 13),秘密S為1,則得到秘密份額為(1,4),(2,9),(3,3),(4,12)。將秘密份額分別發(fā)給Alice、Bob、Tom和Jack等4個人,原始QR碼如圖3所示。

    圖3 原始QR碼

    圖3(a)為Alice的秘密份額(1,4),用戶秘鑰為Alice,掩碼類型為5。根據(jù)信息隱藏步驟,生成的位置序列LN為{(12, 3), (20, 6), (12, 5), (2, 7), (20, 5), (1, 7), (2, 2), (0, 4), (0, 7), (25, 7), (20, 7), (2, 0), (15, 4), (2, 5), (12, 7), (15, 3), (0, 0), (15, 0), (12, 2), (0, 3), (15, 5), (20, 0), (0, 6), (11, 0), (1, 3), (0, 1), (15, 2), (11, 5), (1, 5), (11, 2), (12, 1), (1, 6), (20, 4), (11, 1), (2, 4), (25, 5), (11, 4), (25, 3), (0, 2), (2, 6), (2, 3), (25, 4), (1, 0), (2, 1), (11, 6), (20, 3), (25, 1), (0, 5), (1, 4), (12, 0), (1, 2), (25, 2), (11, 7), (1, 1), (15, 7), (12, 6), (20, 2), (25, 6), (12, 4), (11, 3), (25, 0), (15, 1), (15, 6), (20, 1)}。生成的數(shù)據(jù)碼MQR為{64, 84, 22, 198, 150, 54, 80, 236, 17, 23, 150, 138, 92, 36, 196, 194, 252, 186, 128, 157, 143, 101, 155, 141, 213, 206}。生成的帶糾錯碼的秘密序列SN為{26, 0, 13, 128, 5, 175, 61}。生成的隱藏QR碼數(shù)據(jù)碼為{4, 240, 51, 198, 150, 54, 80, 236, 17, 23, 150, 131, 10, 36, 196, 70, 252, 186, 128, 157, 148, 101, 155, 141, 213, 242},其中下劃線數(shù)據(jù)為隱藏的數(shù)據(jù)塊。

    圖3(b)為Bob的秘密份額(2,9),用戶秘鑰為Bob,掩碼類型為3。根據(jù)信息隱藏步驟,生成的位置序列LN為{(22, 4), (21, 1), (0, 1), (6, 7), (25, 4), (25, 6), (25, 2), (22, 2), (22, 5), (24, 3), (25, 3), (2, 4), (0, 6), (6, 1), (22, 1), (24, 2), (24, 7), (21, 0), (2, 7), (15, 6), (15, 3), (22, 6), (6, 6), (24, 1), (0, 5), (21, 4), (0, 3), (21, 7), (2, 3), (0, 0), (2, 0), (15, 1), (0, 7), (24, 6), (25, 1), (15, 5), (21, 6), (0, 2), (2, 2), (22, 7), (25, 0), (21, 5), (6, 3), (6, 2), (21, 3), (2, 5), (6, 0), (22, 3), (6, 5), (0, 4), (15, 0), (25, 5), (24, 0), (22, 0), (24, 4), (2, 1), (15, 4), (21, 2), (25, 7), (24, 5), (2, 6), (6, 4), (15, 7), (15, 2)}。生成的數(shù)據(jù)碼MQR為{64, 52, 38, 246, 32, 236, 17, 236, 17, 167, 12, 73, 145, 3, 124, 135, 248, 0, 32, 209, 179, 251, 124, 124, 200, 134}。生成的帶糾錯碼的秘密序列SN為{25, 0, 130, 226, 33, 55, 111}。隱藏QR碼數(shù)據(jù)碼為{28, 52, 198, 246, 32, 236, 179, 236, 17, 167, 12, 73, 145, 3, 124, 129, 248, 0, 32, 209, 179, 40, 177, 124, 137, 72},其中下劃線數(shù)據(jù)為隱藏的數(shù)據(jù)塊。

    圖3(c)為Tom的秘密份額(3,3),用戶秘鑰為123456,掩碼類型為4。根據(jù)信息隱藏步驟,生成的位置序列LN為{ (3, 3), (8, 6), (4, 7), (16, 4), (6, 3), (6, 0), (16, 1), (0, 7), (16, 5), (19, 4), (19, 6), (8, 7), (0, 0), (0, 2), (19, 1), (23, 0), (6, 4), (6, 6), (23, 4), (16, 3), (0, 5), (4, 6), (19, 3), (6, 7), (3, 6), (8, 2), (23, 3), (6, 1), (8, 0), (4, 2), (19, 2), (0, 3), (19, 5), (19, 0), (23, 6), (16, 2), (3, 2), (3, 5), (4, 4), (19, 7), (4, 3), (3, 7), (6, 5), (8, 4), (8, 1), (23, 5), (0, 6), (23, 2), (4, 1), (16, 0), (8, 3), (23, 7), (4, 5), (8, 5), (0, 1), (4, 0), (23, 1), (16, 6), (3, 0), (0, 4), (3, 4), (3, 1), (6, 2), (16, 7)}。生成的數(shù)據(jù)碼MQR為{64, 53, 70, 246, 208, 236, 17, 236, 17, 1, 43, 123, 49, 5, 31, 241, 110, 193, 0, 1, 153, 226, 212, 17, 232, 102}。生成的帶糾錯碼的秘密序列SN為{25, 1, 157, 36, 30, 164, 27}。生成的隱藏QR碼數(shù)據(jù)碼為{69, 53, 70, 228, 190, 236, 29, 236, 0, 1, 43, 123, 49, 5, 31, 241, 58, 193, 0, 0, 153, 226, 212, 149, 232, 102},其中下劃線數(shù)據(jù)為隱藏的數(shù)據(jù)塊。

    圖3(d)為Jack的秘密份額(4,12),用戶秘鑰為1q2w3e4r,掩碼類型為0。根據(jù)信息隱藏步驟,生成的位置序列LN為{(6, 1), (20, 7), (20, 3), (11, 1), (22, 4), (11, 7), (12, 6), (9, 0), (9, 1), (18, 0), (20, 1), (22, 0), (12, 3), (11, 3), (12, 5), (9, 5), (16, 7), (20, 0), (16, 5), (18, 5), (6, 4), (18, 4), (16, 1), (22, 6), (16, 2), (20, 2), (18, 3), (22, 3), (16, 0), (22, 7), (9, 7), (6, 6), (6, 0), (11, 6), (16, 6), (18, 6), (6, 5), (9, 4), (11, 0), (22, 1), (12, 0), (20, 6), (9, 6), (18, 1), (20, 5), (11, 2), (6, 3), (9, 3), (11, 4), (12, 7), (20, 4), (12, 1), (22, 5), (22, 2), (12, 2), (9, 2), (12, 4), (16, 4), (16, 3), (6, 2), (6, 7), (18, 7), (18, 2), (11, 5)}。生成的數(shù)據(jù)碼MQR為{64, 68, 166, 22, 54, 176, 236, 17, 236, 76, 220, 200, 18, 29, 214, 39, 239, 223, 220, 24, 71, 225, 7, 229, 239, 218}。生成的帶糾錯碼的秘密序列SN為{24, 153, 0, 113, 88, 42, 137, 11}。生成的隱藏QR碼數(shù)據(jù)碼為{64, 68, 166, 22, 54, 176, 23, 17, 236, 102, 220, 78, 16, 29, 214, 39, 0, 223, 50, 24, 36, 225, 156, 229, 239, 218},其中下劃線數(shù)據(jù)為隱藏的數(shù)據(jù)塊。

    通過信息隱藏,將秘密份額隱藏在各個QR碼中。經(jīng)過隱藏后的QR碼如圖4所示。

    圖4 隱藏后的QR碼

    圖3(a)隱藏后的QR碼如圖4(a)所示,掩碼類型為5,因為隱藏后構(gòu)造QR碼的掩碼類型并未發(fā)生變化,所以QR碼整體變化很小。圖3(b)隱藏后的QR碼如圖4(b)所示,隱藏后掩碼類型為7,原始QR碼掩碼類型為3,掩碼類型發(fā)生改變,QR碼整體變化大。圖3(c)隱藏后的QR碼如圖4(c)所示,隱藏后掩碼類型為7,原始QR碼掩碼類型為4,掩碼類型發(fā)生改變,QR碼整體變化大。圖3(d)隱藏后的QR碼如圖4(d)所示,隱藏后掩碼類型為2,原始QR碼掩碼類型為0,掩碼類型發(fā)生改變,QR碼整體變化大。

    以上QR碼使用掃描器均可正常讀取封面信息,通過隱藏信息的恢復(fù)步驟可以讀取隱藏信息。任意選取其中3個QR碼輸入各自用戶秘鑰后即可恢復(fù)秘密,如圖5所示。

    圖5 秘密恢復(fù)

    實例仿真結(jié)果表明,秘密信息可以被正確的掃碼讀取,并通過秘密共享步驟進行恢復(fù),證明了方案的可行性。

    3.2 相關(guān)方案比較

    將本文方案分別與文獻[7-15]方案進行應(yīng)用領(lǐng)域、作用域、是否對QR碼進行操作、計算復(fù)雜度和能否抵抗篡改等5個方面進行對比,結(jié)果如表2 所示。

    表2 相關(guān)方案比較

    由表2可以看出,文獻[7-10]方案的應(yīng)用領(lǐng)域為圖像隱藏,計算復(fù)雜度高,且秘密存儲容量等于隱藏QR碼的圖片的大小。文獻[11-14]方案的應(yīng)用領(lǐng)域為水印技術(shù),作用域為頻域,計算復(fù)雜度高,且最大數(shù)據(jù)容量取決于QR碼圖像的大小。文獻方案[7-14]均不能直接修改QR碼模塊。文獻[15-16]方案的應(yīng)用領(lǐng)域為秘密共享,文獻[15]僅利用了QR碼作為介質(zhì),安全性很低。文獻[16]使用信息隱藏方案,但是存在大量矩陣運算,計算復(fù)雜度高,并且根據(jù)秘密長短改變隱藏塊數(shù)量,在隱藏秘密很短并被攻擊者了解存在隱藏的情況下安全性無法達到理想狀態(tài)。而本文方案應(yīng)用領(lǐng)域為利用信息隱藏的秘密共享,通過秘鑰直接得到位置信息序列,再通過位置序列直接嵌入秘密信息。秘密恢復(fù)時通過位置序列直接讀取對應(yīng)位置信息。因此,計算復(fù)雜度低,僅與隨機位置序列的生成有關(guān)。直接利用QR碼版本和糾錯等級對應(yīng)的最大糾錯能力數(shù)量的塊,不會因為隱藏秘密的長短而損失安全性。在隱藏的秘密信息中加入糾錯機制可有效預(yù)防隱藏QR碼被惡意損壞或篡改造成的隱藏信息丟失,無法恢復(fù)等問題。

    4 結(jié)語

    利用QR碼的糾錯特征,使用用戶設(shè)置秘鑰控制,通過偽隨機發(fā)生器,設(shè)計了直接修改QR碼編碼模塊信息的秘密隱藏方案。該方案可讀性強,且秘密容量可調(diào)節(jié),實現(xiàn)了信息的隱藏及秘密共享應(yīng)用。實例仿真結(jié)果表明,該方案可以正常讀取QR碼封面信息,并且僅在擁有用戶密鑰時可以正常讀取QR碼中的隱藏信息。與其他相關(guān)方案比較,本方案計算復(fù)雜度低,可以有效預(yù)防隱藏QR碼被惡意損壞或篡改造成的隱藏信息丟失、無法恢復(fù)等問題。

    猜你喜歡
    掩碼份額秘密
    2024年主動權(quán)益類基金收益率、規(guī)模前50名
    低面積復(fù)雜度AES低熵掩碼方案的研究
    基于布爾異或掩碼轉(zhuǎn)算術(shù)加法掩碼的安全設(shè)計*
    愿望樹的秘密(二)
    手心里有秘密
    我心中的秘密
    第十三章 進化的秘密!
    基于掩碼的區(qū)域增長相位解纏方法
    基于掩碼的AES算法抗二階DPA攻擊方法研究
    分級基金的折算機制研究
    時代金融(2013年6期)2013-08-15 00:51:28
    东至县| 枣阳市| 皮山县| 页游| 乐清市| 榆中县| 尚志市| 福鼎市| 屏东市| 遂川县| 台中县| 平度市| 施甸县| 闽侯县| 建始县| 潼南县| 邯郸市| 灌云县| 苏州市| 九龙县| 博野县| 浦东新区| 泗阳县| 弋阳县| 高邮市| 塔河县| 射阳县| 米林县| 满洲里市| 万载县| 永定县| 周宁县| 沙河市| 哈巴河县| 双江| 扬中市| 马龙县| 富源县| 通道| 方山县| 兴山县|