{"id":252,"date":"2025-08-27T18:56:00","date_gmt":"2025-08-27T10:56:00","guid":{"rendered":"http:\/\/www.triode.cc\/?p=252"},"modified":"2025-10-02T15:35:29","modified_gmt":"2025-10-02T07:35:29","slug":"hssp","status":"publish","type":"post","link":"https:\/\/www.triode.cc\/index.php\/2025\/08\/27\/hssp\/","title":{"rendered":"\u9690\u5b50\u96c6\u548c\u95ee\u9898(Hidden Subset Sum Problem)"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u53c2\u8003\u8d44\u6599\uff1a<a href=\"https:\/\/eprint.iacr.org\/2020\/461.pdf\">A Polynomial-Time Algorithm for Solving the Hidden Subset Sum Problem<\/a><\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">\u524d\u7f6e\u77e5\u8bc6<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u6b63\u4ea4\u683c<\/h3>\n\n\n\n<p>\u5bf9\u4e8e\\(\\mathbb{Z}^m\\)\u4e0a\u4e00\u4e2a\u683c\\(\\mathcal{L}\\)\uff0c\u5b9a\u4e49\u5176\u6b63\u4ea4\u683c\u4e3a\uff1a<\/p>\n\n\n\n<p>$$<br>\\mathcal{L}^{\\bot}=\\left\\{\\pmb{v}\\in\\mathbb{Z}^m\\mid\\forall\\pmb{b}\\in\\mathcal{L},\\langle\\pmb{v},\\pmb{b}\\rangle=0\\right\\}<br>$$<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u5b8c\u5907\u683c<\/h3>\n\n\n\n<p>\u5bf9\u4e8e\\(\\mathbb{Z}^m\\)\u4e0a\u4e00\u4e2a\u683c\\(\\mathcal{L}\\)\uff0c\u5b9a\u4e49\u5176\u5b8c\u5907\u683c\u4e3a\\(\\overline{\\mathcal{L}}=(\\mathcal{L}^{\\bot})^{\\bot}\\).\u663e\u7136\u7684\uff0c\\(\\mathcal{L}\\)\u4e3a\\(\\overline{\\mathcal{L}}\\)\u7684\u4e00\u4e2a\u6ee1\u79e9\u5b50\u683c.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u95ee\u9898\u7b80\u8ff0<\/h2>\n\n\n\n<p>\u8bbe\\(M\\)\u4e3a\u4e00\u6574\u6570\uff0c\u8bbe\\(\\alpha_1,\\alpha_2,\\cdots,\\alpha_n\\)\u662f\\(\\mathbb{Z}\/M\\mathbb{Z}\\)\u4e0a\u968f\u673a\u9009\u53d6\u7684\\(n\\)\u4e2a\u6574\u6570\uff0c\\(\\pmb{x}_1,\\pmb{x}_2,\\cdots,\\pmb{x}_n\\)\u4e3a\\(\\mathbb{Z}^{m}\\)\u4e0a\u968f\u673a\u9009\u53d6\u7684\\(m\\)\u4e2a\\(0-1\\)\u5411\u91cf\uff08\u5373\\(\\pmb{x}_1,\\pmb{x}_2,\\cdots,\\pmb{x}_n\\in\\left\\{0,1\\right\\}^m\\)\uff09\uff0c\u4ee4 <\/p>\n\n\n\n<p>$$ \\pmb{h}\\equiv\\sum_{i=1}^{n}\\alpha_i\\pmb{x}_i\\equiv\\alpha_1\\pmb{x}_1+\\alpha_2\\pmb{x}_2+\\cdots+\\alpha_n\\pmb{x}_n\\pmod{M}<br>$$<\/p>\n\n\n\n<p>\u9690\u5b50\u96c6\u548c\u95ee\u9898\uff08Hidden Subset Sum Problem\uff0c\u7b80\u79f0HSSP\uff09\u5373\u4e3a\u5df2\u77e5\u6574\u6570\\(M\\)\u4ee5\u53ca\u5411\u91cf\\(\\pmb{h}\\)\uff0c\u6062\u590d\\((\\alpha_1,\\alpha_2,\\cdots,\\alpha_n)\\)\u4ee5\u53ca\\((\\pmb{x_1},\\pmb{x_2},\\cdots,\\pmb{x_n})\\).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Nguyen-Stern\u7b97\u6cd5<\/h2>\n\n\n\n<p>\u6c42\u89e3HSSP\u7684\u4e00\u79cd\u6bd4\u8f83\u884c\u4e4b\u6709\u6548\u7684\u65b9\u6cd5\u5c31\u662fNguyen-Stern\u7b97\u6cd5\uff0c\u8fd9\u4e2a\u7b97\u6cd5\u4e3b\u8981\u5206\u4e3a\u4e24\u6b65\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u4ece\\(\\pmb{h}\\)\u4e2d\u5f97\u5230\u7531\\(\\pmb{x_1},\\pmb{x_2},\\cdots,\\pmb{x_n}\\)\u6240\u751f\u6210\u7684\u683c\\(\\mathcal{L}_{\\pmb{x}}\\)\u7684\u5b8c\u5907\u683c\\(\\overline{\\mathcal{L}}_{\\pmb{x}}\\).<\/li>\n\n\n\n<li>\u4ece\\(\\overline{\\mathcal{L}}_{\\pmb{x}}\\)\u4e2d\u6062\u590d\u5411\u91cf\\(\\pmb{x_1},\\pmb{x_2},\\cdots,\\pmb{x_n}\\)\uff0c\u4ece\u800c\u6839\u636e\\(\\pmb{h},M,\\pmb{x_1},\\pmb{x_2},\\cdots,\\pmb{x_n}\\)\u6062\u590d\u51fa\\(\\alpha_1,\\alpha_2,\\cdots,\\alpha_n\\).<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">\u7b2c\u4e00\u6b65<\/h3>\n\n\n\n<p>\u9996\u5148\u6211\u4eec\u9700\u8981\u901a\u8fc7\u6b63\u4ea4\u683c\u653b\u51fb\uff08Orthogonal Lattice Attack\uff09\u6765\u83b7\u5f97\\(\\overline{\\mathcal{L}}_{\\pmb{x}}\\)\uff0c\u6211\u4eec\u8bbe\u6240\u6709\u6a21\\(M\\)\u4e0b\u4e0e\u5411\u91cf\\(\\pmb{h}\\)\u6b63\u4ea4\u7684\u5411\u91cf\u6240\u6784\u6210\u7684\u683c\u4e3a\uff1a <\/p>\n\n\n\n<p>$$ \\mathcal{L}_0=\\left\\{\\pmb{u}\\in\\mathbb{Z}^m\\mid\\langle\\pmb{u},\\pmb{h}\\rangle\\equiv0\\pmod{M}\\right\\} $$ <\/p>\n\n\n\n<p>\u663e\u7136\u7684\uff0c\u5bf9\u4e8e\\(\\mathcal{L}_0\\)\u4e2d\u4efb\u4e00\u5411\u91cf\\(\\pmb{u}\\)\uff0c\u5fc5\u7136\u6709\uff1a <\/p>\n\n\n\n<p>$$ <br>\\begin{aligned}<br>\\langle\\pmb{u},\\pmb{h}\\rangle&amp;\\equiv\\left\\langle\\pmb{u},\\sum{i=1}^n\\alpha_i\\pmb{x}_i\\right\\rangle\\\\<br>&amp;\\equiv\\sum{i=1}^n\\alpha_i\\langle\\pmb{u},\\pmb{x}_i\\rangle\\\\<br>&amp;\\equiv\\alpha_1\\langle\\pmb{u},\\pmb{x}_1\\rangle+\\alpha_2\\langle\\pmb{u},\\pmb{x}_2\\rangle+\\cdots+\\alpha_n\\langle\\pmb{u},\\pmb{x}_n\\rangle\\\\<br>&amp;\\equiv0\\pmod{M} <br>\\end{aligned}<br>$$ <\/p>\n\n\n\n<p>\u53ef\u4ee5\u77e5\u9053\uff0c\u5411\u91cf\\((\\langle\\pmb{u},\\pmb{x}_1\\rangle,\\langle\\pmb{u},\\pmb{x}_2\\rangle,\\cdots,\\langle\\pmb{u},\\pmb{x}_n\\rangle)\\)\u4e0e\u5411\u91cf\\((\\alpha_1,\\alpha_2,\\cdots,\\alpha_n)\\)\u5728\u6a21\\(M\\)\u4e0b\u662f\u6b63\u4ea4\u7684\uff0c\u56e0\u4e3a\\(\\pmb{x}_1,\\pmb{x}_2,\\cdots,\\pmb{x}_n\\)\uff0c\u90a3\u4e48\u5982\u679c\\(\\pmb{u}\\)\u8db3\u591f\u77ed\u7684\u8bdd\uff0c\u5411\u91cf\\((\\langle\\pmb{u},\\pmb{x}_1\\rangle,\\langle\\pmb{u},\\pmb{x}_2\\rangle,\\cdots,\\langle\\pmb{u},\\pmb{x}_n\\rangle)\\)\u4e5f\u4f1a\u6bd4\u8f83\u77ed\uff0c\u800c\u5982\u679c\u5411\u91cf\\((\\langle\\pmb{u},\\pmb{x}_1\\rangle,\\langle\\pmb{u},\\pmb{x}_2\\rangle,\\cdots,\\langle\\pmb{u},\\pmb{x}_n\\rangle)\\)\u6bd4\u4e0e\\((\\alpha_1,\\alpha_2,\\cdots,\\alpha_n)\\)\u5728\u6a21\\(M\\)\u4e0b\u6b63\u4ea4\u7684\u975e\u96f6\u5411\u91cf\u90fd\u77ed\u7684\u8bdd\uff0c\u90a3\u4e48\u5b83\u53ea\u80fd\u662f\u96f6\u5411\u91cf\uff0c\u4e5f\u5c31\u662f\u6709\uff1a <\/p>\n\n\n\n<p>$$ (\\langle\\pmb{u},\\pmb{x}_1\\rangle,\\langle\\pmb{u},\\pmb{x}_2\\rangle,\\cdots,\\langle\\pmb{u},\\pmb{x}_n\\rangle)=(0,0,\\cdots,0)\\Rightarrow\\langle\\pmb{u},\\pmb{x}_i\\rangle=0(i=1,2,\\cdots,n) <br>$$ <\/p>\n\n\n\n<p>\u90a3\u4e48\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u4e00\u4e9b\u65b9\u6cd5\u6784\u9020\\(\\mathcal{L}_0\\)\u5e76\u8fdb\u884c\u89c4\u7ea6\uff0c\u53d6\u51fa\u7ea6\u51cf\u57fa\u7684\u524d\\(m-n\\)\u4e2a\u77ed\u5411\u91cf\\(\\pmb{u}_1,\\pmb{u}_2,\\cdots,\\pmb{u}_{m-n}\\)\u53ef\u4ee5\u6784\u6210\\(\\mathcal{L}_{\\pmb{x}}^{\\bot}\\)\uff0c\u518d\u6c42\u5176\u6b63\u4ea4\u683c\u5373\u53ef\u5f97\u5230\u5b8c\u5907\u683c\\(\\overline{\\mathcal{L}}_{\\pmb{x}}=(\\mathcal{L}_{\\pmb{x}}^{\\bot})^{\\bot}\\).<\/p>\n\n\n\n<p>\u5728\u53c2\u8003\u8d44\u6599\u4e2d\u7ed9\u51fa\u4e00\u79cd\u901a\u8fc7\\(\\pmb{h}\\)\u6765\u6784\u9020\\(\\mathcal{L}_0\\)\u7684\u65b9\u6cd5\uff0c\u6211\u4eec\u8bbe\\(\\pmb{h}=(h_1,h_2,\\cdots,h_n)\\)\uff0c\u5982\u679c\\(\\gcd(h_1,M)=1\\)\uff0c\u90a3\u4e48\u5bf9\u4e8e\\(\\pmb{u}=(u_1,u_2,\\cdots,u_m)\\in\\mathcal{L}_0\\)\u6211\u4eec\u53ef\u4ee5\u5f97\u5230\uff1a <\/p>\n\n\n\n<p>$$ <br>\\langle\\pmb{u},\\pmb{h}\\rangle\\equiv\\sum_{i=1}^mu_ih_i\\equiv u_1h_1+\\sum_{i=2}^mu_ih_i\\equiv0\\pmod{M}<br>$$<\/p>\n\n\n\n<p>\u4e24\u8fb9\u540c\u4e58\\(h_1^{-1}\\)\u6709\uff1a<\/p>\n\n\n\n<p><br>$$<br>u_1+\\sum_{i=2}^mu_ih_{1}^{-1}h_i\\equiv0\\pmod{M}<br>$$<\/p>\n\n\n\n<p>\u5373\uff1a<\/p>\n\n\n\n<p>$$<br>u_1+\\sum_{i=2}^m(u_ih_{1}^{-1}h_i\\mod{M})=kM<br>$$<\/p>\n\n\n\n<p>\u90a3\u4e48\u53ef\u4ee5\u5f97\u5230\u4e00\u7ebf\u6027\u5173\u7cfb\uff1a<\/p>\n\n\n\n<p>$$<br>u_1=kM-\\sum_{i=2}^m(u_ih_{1}^{-1}h_i\\mod{M})<br>$$<\/p>\n\n\n\n<p>\u901a\u8fc7\u8fd9\u4e00\u7ebf\u6027\u5173\u7cfb\u6211\u4eec\u53ef\u4ee5\u6784\u9020\u51fa\u683c\uff1a<\/p>\n\n\n\n<p>$$<br>\\mathcal{L}_0=\\left(\\begin{matrix} <br>M&amp;0&amp;0&amp;\\cdots&amp;0\\\\<br>-h_1^{-1}h_2\\mod{M}&amp;1&amp;0&amp;\\cdots&amp;0\\\\<br>-h_1^{-1}h_3\\mod{M}&amp;0&amp;1&amp;\\cdots&amp;0\\\\<br>\\vdots&amp;\\vdots&amp;\\vdots&amp;\\ddots&amp;\\vdots\\\\<br>-h_1^{-1}h_m\\mod{M}&amp;0&amp;0&amp;\\cdots&amp;1 <br>\\end{matrix}\\right) <br>$$ <\/p>\n\n\n\n<p>\u5bf9\u4e8e\u8fd9\u4e2a\u683c\uff0c\u6709\uff1a <\/p>\n\n\n\n<p>$$ <br>(k,u_2,\\cdots,u_m)\\mathcal{L}_0=(u_1,u_2,\\cdots,u_m) <br>$$ <\/p>\n\n\n\n<p>\u6839\u636e\u524d\u9762\u7684\u5206\u6790\u53ef\u4ee5\u77e5\u9053\u8fd9\u4e2a\u683c\u89c4\u7ea6\u540e\u5f97\u5230\u7684\u7ea6\u51cf\u57fa\u7684\u524d\\(m-n\\)\u4e2a\u77ed\u5411\u91cf\\(\\pmb{u}_1,\\pmb{u}_2,\\cdots,\\pmb{u}_{m-n}\\)\u53ef\u4ee5\u6784\u6210\\(\\mathcal{L}_{\\pmb{x}}^{\\bot}\\)\uff0c\u5728\u83b7\u5f97\\(\\mathcal{L}_{\\pmb{x}}^{\\bot}\\)\u4e4b\u540e\uff0c\u53ea\u9700\u8981\u6c42\\(\\mathcal{L}_{\\pmb{x}}^{\\bot}\\)\u7684\u6838\u7a7a\u95f4\u5373\u53ef\u5f97\u5230\\(\\overline{\\mathcal{L}}_{\\pmb{x}}=(\\mathcal{L}_{\\pmb{x}}^{\\bot})^{\\bot}\\).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u7b2c\u4e8c\u6b65<\/h3>\n\n\n\n<p>\u56e0\u4e3a\\(\\mathcal{L}_{\\pmb{x}}\\)\u4e3a\\(\\overline{\\mathcal{L}}_{\\pmb{x}}\\)\u7684\u4e00\u4e2a\u5b50\u683c\uff0c\u6240\u4ee5\\(\\overline{\\mathcal{L}}_{\\pmb{x}}\\)\u4e2d\u5fc5\u7136\u662f\u5305\u542b\\(\\pmb{x}_1,\\pmb{x}_2,\\cdots,\\pmb{x}_n\\)\u7684\uff0c\u53c8\u56e0\u4e3a\\(\\pmb{x}_1,\\pmb{x}_2,\\cdots,\\pmb{x}_n\\in\\left\\{0,1\\right\\}^m\\)\uff0c\u90a3\u4e48\u76f4\u63a5\u5bf9\\(\\overline{\\mathcal{L}}_{\\pmb{x}}\\)\u8fdb\u884c\u89c4\u7ea6\u5927\u6982\u7387\u662f\u53ef\u4ee5\u5f97\u5230\\(\\pmb{x}_1,\\pmb{x}_2,\\cdots,\\pmb{x}_n\\)\u7684\uff0c\u4e5f\u53ef\u4ee5\u6784\u9020\u683c\uff1a <\/p>\n\n\n\n<p>$$ <br>\\mathcal{L}_{\\pmb{x}}&#8217;=\\left(\\begin{matrix}2\\mathcal{L_{\\pmb{x}}}\\\\-\\pmb{e}\\end{matrix}\\right)<br>$$<\/p>\n\n\n\n<p>\u6765\u89c4\u7ea6\u6c42\u5f97\\(2\\pmb{x}_1-\\pmb{e},2\\pmb{x}_2-\\pmb{e},\\cdots,2\\pmb{x}_n-\\pmb{e}\\in\\left\\{-1,1\\right\\}^m\\)\uff08\u5176\u4e2d\\(\\pmb{e}=(1,1,\\cdots,1)\\)\uff0c\u8981\u53bb\u6389\u89c4\u7ea6\u540e\u7684\u683c\u57fa\u91cc\u9762\u5168\u4e3a\\(1\\)\u6216\u5168\u4e3a\\(-1\\)\u7684\u884c\u5411\u91cf\uff0c\u4e14\u6709\u90e8\u5206\u5411\u91cf\u6c42\u51fa\u662f\\(\\pmb{e}-2\\pmb{x}_i\\)\uff09. \u5728\u83b7\u5f97\\(\\pmb{x}_1,\\pmb{x}_2,\\cdots,\\pmb{x}_n\\)\u4e4b\u540e\uff0c\u53ea\u9700\u8981\u6c42\u89e3\u65b9\u7a0b\uff1a<\/p>\n\n\n\n<p>$$<br>\\pmb{h}=(\\alpha_1,\\alpha_2,\\cdots,\\alpha_n)\\left(\\begin{matrix}\\pmb{x}_1\\\\\\pmb{x}_2\\\\\\vdots\\\\\\pmb{x}_n\\end{matrix}\\right)<br>$$<\/p>\n\n\n\n<p>\u5c31\u53ef\u4ee5\u6062\u590d\u51fa\\(\\alpha_1,\\alpha_2,\\cdots,\\alpha_n\\).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u4ee3\u7801\u5b9e\u73b0<\/h3>\n\n\n\n<p>\u6839\u636e\u4e0a\u8ff0\u5206\u6790\uff0c\u901a\u8fc7\u5982\u4e0b\u4ee3\u7801\u5c31\u53ef\u4ee5\u6c42\u89e3HSSP\uff08\u56e0\u4e3a\u683c\u8f83\u5927\uff0c\u6240\u4ee5\u5728\u6b63\u4ea4\u683c\u653b\u51fb\u4e00\u6b65\u4e2d\u4f7f\u7528flatter\u8fdb\u884c\u52a0\u901f\uff09<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"\u590d\u5236\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>from Crypto.Util.number import *\n\ndef flatter(M):  \n    from subprocess import check_output  \n    from re import findall  \n    global count  \n    z = \"[&#91;\" + \"&#93;\\n&#91;\".join(\" \".join(map(str, row)) for row in M) + \"&#93;]\"  \n    ret = check_output(&#91;\"flatter\"&#93;, input=z.encode())  \n    return matrix(M.nrows(), M.ncols(), map(int, findall(b\"-?\\\\d+\", ret)))  \n\nm = ...\nn = ...\nM = ...\nh = &#91;...&#93;\n\nL0 = matrix(ZZ, m, m)\nL0&#91;0, 0&#93; = M\ninv_h0 = inverse(h&#91;0&#93;, M)\nfor i in range(1, m):\n    L0&#91;i, 0&#93; = -h&#91;i&#93; * inv_h0\n    L0&#91;i, i&#93; = 1\n\nLx_ort = matrix(ZZ, flatter(L0)&#91;0: m-n&#93;)\n\nLx = Lx_ort.right_kernel(algorithm='pari').matrix()\n\ne = matrix(ZZ, &#91;1 for _ in range(m)&#93;)\nL = block_matrix(ZZ, [&#91;2*Lx&#93;, &#91;-e&#93;])\n\ne = vector(ZZ, &#91;1 for _ in range(m)&#93;)\ntmpMat = L.BKZ()\n\nB = []\nspace = Lx.row_space()\nfor v in tmpMat:\n    if len(set(v)) == 1:\n        continue\n    else:\n        tmp = (v + e) \/ 2\n\n        if tmp in space:\n            B.append(tmp)\n        elif e - tmp in space:\n            B.append(e - tmp)\n\nL_x = matrix(Zmod(M), B)\nH = vector(Zmod(M), h)\n\nprint(L_x.solve_left(H))<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">from<\/span><span style=\"color: #D8DEE9FF\"> Crypto<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">Util<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">number <\/span><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">*<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">flatter<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">M<\/span><span style=\"color: #ECEFF4\">):<\/span><span style=\"color: #D8DEE9FF\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">from<\/span><span style=\"color: #D8DEE9FF\"> subprocess <\/span><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> check_output  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">from<\/span><span style=\"color: #D8DEE9FF\"> re <\/span><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> findall  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">global<\/span><span style=\"color: #D8DEE9FF\"> count  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    z <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">[&#91;<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">+<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">&#93;<\/span><span style=\"color: #EBCB8B\">\\n<\/span><span style=\"color: #A3BE8C\">&#91;<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">join<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">join<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">map<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">str<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> row<\/span><span style=\"color: #ECEFF4\">))<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">for<\/span><span style=\"color: #D8DEE9FF\"> row <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> M<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">+<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">&#93;]<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ret <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">check_output<\/span><span style=\"color: #ECEFF4\">(&#91;<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">flatter<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">&#93;,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">input<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">z<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">encode<\/span><span style=\"color: #ECEFF4\">())<\/span><span style=\"color: #D8DEE9FF\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">matrix<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">M<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">nrows<\/span><span style=\"color: #ECEFF4\">(),<\/span><span style=\"color: #D8DEE9FF\"> M<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">ncols<\/span><span style=\"color: #ECEFF4\">(),<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">map<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">int<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">findall<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">b<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">-?<\/span><span style=\"color: #EBCB8B\">\\\\<\/span><span style=\"color: #A3BE8C\">d+<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> ret<\/span><span style=\"color: #ECEFF4\">)))<\/span><span style=\"color: #D8DEE9FF\">  <\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">m <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> ...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">n <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> ...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">M <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> ...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">h <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#91;<\/span><span style=\"color: #D8DEE9FF\">...<\/span><span style=\"color: #ECEFF4\">&#93;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">L0 <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">matrix<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">ZZ<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> m<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> m<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">L0<\/span><span style=\"color: #ECEFF4\">&#91;<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #ECEFF4\">&#93;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> M<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">inv_h0 <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">inverse<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">h<\/span><span style=\"color: #ECEFF4\">&#91;<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #ECEFF4\">&#93;,<\/span><span style=\"color: #D8DEE9FF\"> M<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">for<\/span><span style=\"color: #D8DEE9FF\"> i <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">range<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> m<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    L0<\/span><span style=\"color: #ECEFF4\">&#91;<\/span><span style=\"color: #D8DEE9FF\">i<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #ECEFF4\">&#93;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">h<\/span><span style=\"color: #ECEFF4\">&#91;<\/span><span style=\"color: #D8DEE9FF\">i<\/span><span style=\"color: #ECEFF4\">&#93;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">*<\/span><span style=\"color: #D8DEE9FF\"> inv_h0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    L0<\/span><span style=\"color: #ECEFF4\">&#91;<\/span><span style=\"color: #D8DEE9FF\">i<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> i<\/span><span style=\"color: #ECEFF4\">&#93;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">Lx_ort <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">matrix<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">ZZ<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">flatter<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">L0<\/span><span style=\"color: #ECEFF4\">)&#91;<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> m<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">n<\/span><span style=\"color: #ECEFF4\">&#93;)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">Lx <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> Lx_ort<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">right_kernel<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">algorithm<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">pari<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">).<\/span><span style=\"color: #88C0D0\">matrix<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">e <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">matrix<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">ZZ<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#91;<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">for<\/span><span style=\"color: #D8DEE9FF\"> _ <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">range<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">m<\/span><span style=\"color: #ECEFF4\">)&#93;)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">L <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">block_matrix<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">ZZ<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">[&#91;<\/span><span style=\"color: #B48EAD\">2<\/span><span style=\"color: #81A1C1\">*<\/span><span style=\"color: #D8DEE9FF\">Lx<\/span><span style=\"color: #ECEFF4\">&#93;,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#91;<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">e<\/span><span style=\"color: #ECEFF4\">&#93;])<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">e <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">vector<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">ZZ<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#91;<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">for<\/span><span style=\"color: #D8DEE9FF\"> _ <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">range<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">m<\/span><span style=\"color: #ECEFF4\">)&#93;)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">tmpMat <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> L<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">BKZ<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">B <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">[]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">space <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> Lx<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">row_space<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">for<\/span><span style=\"color: #D8DEE9FF\"> v <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> tmpMat<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">len<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">set<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">v<\/span><span style=\"color: #ECEFF4\">))<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">==<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">continue<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">else<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        tmp <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">v <\/span><span style=\"color: #81A1C1\">+<\/span><span style=\"color: #D8DEE9FF\"> e<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">2<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> tmp <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> space<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            B<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">append<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">tmp<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">elif<\/span><span style=\"color: #D8DEE9FF\"> e <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\"> tmp <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> space<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            B<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">append<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">e <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\"> tmp<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">L_x <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">matrix<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">Zmod<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">M<\/span><span style=\"color: #ECEFF4\">),<\/span><span style=\"color: #D8DEE9FF\"> B<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">H <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">vector<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">Zmod<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">M<\/span><span style=\"color: #ECEFF4\">),<\/span><span style=\"color: #D8DEE9FF\"> h<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">L_x<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">solve_left<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">H<\/span><span style=\"color: #ECEFF4\">))<\/span><\/span><\/code><\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u7b80\u8ff0\u6b63\u4ea4\u683c\u4e0eHSSP<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[7,10],"class_list":["post-252","post","type-post","status-publish","format-standard","hentry","category-3","tag-crypto","tag-10"],"_links":{"self":[{"href":"https:\/\/www.triode.cc\/index.php\/wp-json\/wp\/v2\/posts\/252","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.triode.cc\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.triode.cc\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.triode.cc\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.triode.cc\/index.php\/wp-json\/wp\/v2\/comments?post=252"}],"version-history":[{"count":7,"href":"https:\/\/www.triode.cc\/index.php\/wp-json\/wp\/v2\/posts\/252\/revisions"}],"predecessor-version":[{"id":259,"href":"https:\/\/www.triode.cc\/index.php\/wp-json\/wp\/v2\/posts\/252\/revisions\/259"}],"wp:attachment":[{"href":"https:\/\/www.triode.cc\/index.php\/wp-json\/wp\/v2\/media?parent=252"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.triode.cc\/index.php\/wp-json\/wp\/v2\/categories?post=252"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.triode.cc\/index.php\/wp-json\/wp\/v2\/tags?post=252"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}