{"id":230,"date":"2021-05-19T12:58:52","date_gmt":"2021-05-19T04:58:52","guid":{"rendered":"https:\/\/hisui.cn\/?p=230"},"modified":"2025-07-04T19:04:14","modified_gmt":"2025-07-04T11:04:14","slug":"cache%e4%b8%ad%e5%b8%b8%e7%94%a8%e6%96%b9%e6%b3%95","status":"publish","type":"post","link":"http:\/\/hisui.cn\/?p=230","title":{"rendered":"Cache\u4e2d\u5e38\u7528\u65b9\u6cd5"},"content":{"rendered":"<hr \/>\n<h3>BCrypt\u4ee3\u7801\u7ea6\u5b9a<\/h3>\n<table>\n<thead>\n<tr>\n<th>\u4ee3\u7801<\/th>\n<th>\u7b97\u6cd5<\/th>\n<th>\u7c7b\u578b<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>0a<\/td>\n<td>SHA256<\/td>\n<td>\u54c8\u5e0c<\/td>\n<\/tr>\n<tr>\n<td>0b<\/td>\n<td>AES<\/td>\n<td>\u5bf9\u79f0\u52a0\u5bc6<\/td>\n<\/tr>\n<tr>\n<td>1a<\/td>\n<td>SM3<\/td>\n<td>\u54c8\u5e0c<\/td>\n<\/tr>\n<tr>\n<td>1b<\/td>\n<td>SM4<\/td>\n<td>\u5bf9\u79f0\u52a0\u5bc6<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>\u4e00. 32\u4f4dMD5\u52a0\u5bc6\u65b9\u6cd5<\/h3>\n<pre><code class=\"language-javascript line-numbers\"> \/\/ @param {String|Stream} Val \u9700\u8981\u52a0\u5bc6\u7684\u5185\u5bb9\n \/\/ Stream\u5165\u53c2\u5728Cache2016\u4e0b\u652f\u6301\n \/\/ @param {String} CharSet \u7f16\u7801 \u5982\uff1a\"UTF8\"|\"GB18030\"\n \/\/ ##class(web.Util.Encryption).MD5HexStr(Val,CharSet)\n &gt;W ##class(web.Util.Encryption).MD5HexStr(\"1\")\n C4CA4238A0B923820DCC509A6F75849B\n &gt;W ##class(web.Util.Encryption).MD5HexStr(\"\u6211\",\"UTF8\")\n 16815254531798DC21EE979D1D9C6675\n<\/code><\/pre>\n<h3>\u4e8c. \u6c49\u5b57\u8f6cUncode<\/h3>\n<pre><code class=\"language-javascript line-numbers\">Set Val = \"\u6211\"\nSet Val = $zcvt(Val,\"O\",\"URL\")  \/\/ %u6211\nSet Val = $zcvt(Val,\"I\",\"URL\")  \/\/ \u6211\n\/\/\u6216\nSet Val = $A(Val)    \/\/\u5f97\u5230\u5341\u8fdb\u5236\u6570\u503c 25105\nSet Val = $zhex(Val) \/\/\u8f6c\u6210\u5341\u516d\u8fdb\u5236 6211\n<\/code><\/pre>\n<p>\u7b49\u4ef7\u4e8ejavascript\u4e2d\u7684<\/p>\n<pre><code class=\"language-javascript line-numbers\">escape(\"\u6211\"); \/\/%u6211\nunescape(\"%u6211\") \/\/\u6211\n<\/code><\/pre>\n<h3>\u4e09. URLEncode\u529e\u6cd5\u3002\u53ef\u4ee5\u4f7f\u7528%CSP.Page\u7c7b\u4e2dEscapeURL\/UnescapeURL\uff0c<\/h3>\n<pre><code class=\"language-javascript line-numbers\">Set Val = \"A?=#%&amp; \u6211\"\nSet Val = $zcvt($zcvt(Val,\"O\",\"UTF8\"),\"O\",\"URL\")  \/\/ A%3F%3D%23%25%26%20%E6%88%91\nSet Val = $zcvt($zcvt(Val,\"I\",\"URL\"),\"I\",\"UTF8\")\n<\/code><\/pre>\n<p>\u7b49\u4ef7\u4e8ejavascripts\u4e2d\u7684<\/p>\n<pre><code class=\"language-javascript line-numbers\">encodeURIComponent(\"A?=#%&amp; \u6211\");    \/\/ A%3F%3D%23%25%26%20%E6%88%91\ndecodeURIComponent(\"A%3F%3D%23%25%26%20%E6%88%91\");\n<\/code><\/pre>\n<h3>\u56db. BASE64\u65b9\u6cd5<\/h3>\n<pre><code class=\"language-javascript line-numbers\">\/\/ @param {String|Stream} Val \u9700\u8981\u52a0\u5bc6\u7684\u5185\u5bb9\n\/\/ @param {String} CharSet \u7f16\u7801\u9ed8\u8ba4UTF8\u3002 \u5982\uff1a\"UTF8\"|\"GB18030\"\n\/\/ ##class(web.Util.Encryption).Base64Encode(Val,CharSet)\nSet Val = ##class(web.Util.Encryption).Base64Encode(\"A\u6211\") \/\/QeaIkQ==\nSet Val = ##class(web.Util.Encryption).Base64Decode(\"QeaIkQ==\",\"UTF8\")\n\/\/ -----------\n\/\/ \u5982\u679c\u5165\u53c2\u6216\u8fd4\u56de\u53ef\u80fd\u8d85\u8fc732000\u5b57\u7b26\uff0c\u53ef\u4f7f\u7528\u6d41\u4f5c\u4e3a\u5165\u53c2\nSet inStream = ##class(%GlobalCharacterStream).%New()\nSet inStream.Write(\"abcd123456789......xxxxxxxxxxx\")\n\/\/ \u5165\u53c2\u662f\u6d41\u65f6,\u8fd4\u56de\u4e5f\u662f\u6d41\nSet outStream = ##class(web.Util.Encryption).Base64Encode(inStream,\"UTF8\")\ndo outStream.Rewind()   \/\/\u6307\u5411\u6d41\u5f00\u5934\u4f4d\u7f6e\nwhile('outStream.AtEnd){ \/\/ \u6d41\u672a\u8bfb\u5b8c\n    Set line = outStream.Read(12288)   \/\/ \u8bfb12288\u4e2a\u5b57\u7b26\n    Write line,!\n}\n<\/code><\/pre>\n<h3>\u4e94. \u8f6c\u7801<\/h3>\n<p>A\u754c\u9762\u7f16\u7801\u4e3aGB2312\uff0c\u4f7f\u7528window.open(&#8220;b.csp?name=&#8221;+encodeURIComponent(&#8216;AG009\u4e2d\u56fd&#8217;)),b\u754c\u9762\u4f7f\u7528utf8\u7f16\u7801\uff0c\u6b64\u65f6\u5728b\u754c\u9762\u63a5\u6536%request\u4f1a\u4e71\u7801,\u9700\u8981\u8f6c\u6362<\/p>\n<pre><code class=\"language-javascript line-numbers\">Set val = %request.Data(\"name\",1)\nSet val = $zcvt($zcvt(val,\"O\",\"GB18030\"),\"I\",\"UTF8\")\n<\/code><\/pre>\n<h3>\u516d. \u56fd\u5bc6\uff08ligao\u5b9e\u73b0\uff09<\/h3>\n<h4>1.\u6709\u5bc6\u94a5\u7684SM3\u65b9\u6cd5<\/h4>\n<pre><code class=\"language-javascript line-numbers\">\/\/\/ @Param {String} SrcStr  \u539f\u6d88\u606f\u5b57\u7b26\u4e32\n\/\/\/ @Param {String} Key  \u52a0\u5bc6\u94a5\n\/\/\/ @Param {String} OutType HEX|BASE64   \u8f6c\u51fa\u6210HEX\u6216BASE64 \u9ed8\u8ba4HEX\nW \"hmacSM3 = \",##class(web.Util.Encryption).HmacSM3(\"myname\u6211\", \"1234567887654321\",\"HEX\")\n\/\/\u8f93\u51fa hmacSM3 = 4AE585EF3CF4CF298151835C6CFC587D272580D9EB0644A6CD6294060D6896A2\n<\/code><\/pre>\n<p>\u7b49\u4ef7\u4e8ejava\u5982\u4e0b\u65b9\u6cd5<\/p>\n<pre><code class=\"language-java line-numbers\">public static String hmacHex(String sm3Key,String msg){\n    if (\"\".equals(msg)) return \"\";\n    if (\"\".equals(sm3Key)){return sm3Hex(msg);}  \/\/\u8c03\u7528sm3\u65b9\u6cd5\n    SM3Digest sm3Digest = new SM3Digest();\n    KeyParameter keyParameter = new KeyParameter(sm3Key.getBytes(StandardCharsets.UTF_8));\n    HMac hmac = new HMac(sm3Digest);\n    hmac.init(keyParameter);\n    hmac.update(msg.getBytes(StandardCharsets.UTF_8),0,msg.getBytes(StandardCharsets.UTF_8).length);\n    byte[] result = new byte[hmac.getMacSize()];\n    hmac.doFinal(result,0);\n    return Convert.byteToHex(result);\n}\n<\/code><\/pre>\n<h4>2.\u65e0\u5bc6\u94a5\u7684SM3\u65b9\u6cd5<\/h4>\n<pre><code class=\"language-javascript line-numbers\">\/\/\/ @Param {String} SrcStr  \u539f\u6d88\u606f\u5b57\u7b26\u4e32\n\/\/\/ @Param {String} Key  \u52a0\u5bc6\u94a5 \u4f20\u7a7a\u65f6\u4f7f\u7528SM3\u52a0\u5bc6\n\/\/\/ @Param {String} OutType HEX|BASE64   \u8f6c\u51fa\u6210HEX\u6216BASE64 \u9ed8\u8ba4HEX\nW \"SM3 = \",##class(web.Util.Encryption).HmacSM3(\"123456789\u6211\u662f\")\n\/\/\u8f93\u51fa SM3 = B276BF7E2666AA571AA0C38B6C97FE586B5C4CCFE12E84170481DF447040D331\n\/\/\u7b49\u4ef7\u4e8e##class(web.Util.Encryption).SM3(\"123456789\u6211\u662f\")\n<\/code><\/pre>\n<p>\u7b49\u4ef7\u4e8e\u4ee5\u4e0bjava\u65b9\u6cd5<\/p>\n<pre><code class=\"language-java line-numbers\">public static String sm3Hex(byte[] srcData) {\n    SM3Digest digest = new SM3Digest();\n    digest.update(srcData, 0, srcData.length);\n    byte[] hash = new byte[digest.getDigestSize()];\n    digest.doFinal(hash, 0);\n    return Convert.byteToHex(hash).toUpperCase();\n}\n<\/code><\/pre>\n<h4>3.\u4f7f\u7528SM4\u5bc6\u94a5\u52a0\u5bc6<\/h4>\n<pre><code class=\"language-csharp line-numbers\">\/\/\/ @Param {String} SrcStr  \u539f\u6d88\u606f\u5b57\u7b26\u4e32\n\/\/\/ @Param {String} Key  \u52a0\u5bc6\u94a5(\u957f\u5ea616)\n\/\/\/ @Param {String} OutType HEX|BASE64   \u8f6c\u51fa\u6210HEX\u6216BASE64 \u9ed8\u8ba4BASE64\n\/\/\/ @param {String} KeyType \u5bc6\u94a5\u7c7b\u578b TEXT\/HEX \u9ed8\u8ba4TEXT\u8868\u793a\u6587\u672cKEY\nW ##class(web.Util.Encryption).SM4Encode(\"myname\u6211\",\"1234567887654321\",\"HEX\")\n\/\/\u8f93\u51fa 50B3EBF9E5A6E1512B2EBF1EB130D844\nSet Key = \"d0702de652da45a9ae6086774c7659e4\"\nW ##class(web.Util.Encryption).SM4Encode(\"abc\",Key,\"HEX\",\"HEX\")\n\/\/\u8f93\u51fa D52CA2687BAFC57B6C75E5BFBA1B58E3\nW ##class(web.Util.Encryption).SM4Encode(\"abc\",Key,\"BASE64\",\"HEX\")\n\/\/\u8fd4\u56de\uff1a1SyiaHuvxXtsdeW\/uhtY4w==\n\n\/\/\u6216\u4f7f\u7528\nw ##class(web.Util.SM4).Encrypt(Key,\"abc\",\"HEX\",\"HEX\")\n\/\/ \u8f93\u51faD52CA2687BAFC57B6C75E5BFBA1B58E3\nw ##class(web.Util.SM4).Encrypt(Key,\"\u539f\u6587\",\"HEX\",\"HEX\")\n\/\/ \u8f93\u51fa724A6C93385EF1097838681CFC12777F\n<\/code><\/pre>\n<h4>4.\u4f7f\u7528SM4\u5bc6\u94a5\u89e3\u5bc6<\/h4>\n<pre><code class=\"language-csharp line-numbers\">\/\/\/ @Param {String} EncStr  \u5bc6\u6587\u4e32\n\/\/\/ @Param {String} Key  \u52a0\u5bc6\u94a5(\u957f\u5ea616)\n\/\/\/ @Param {String} InType HEX|BASE64   \u5bc6\u6587\u4e32\u683c\u5f0f\u662fHEX\u6216BASE64 \u9ed8\u8ba4BASE64\n\/\/\/ @param {String} KeyType \u5bc6\u94a5\u7c7b\u578b TEXT\/HEX\nSet Key = \"d0702de652da45a9ae6086774c7659e4\"\nW ##class(web.Util.Encryption).SM4Decode(\"D52CA2687BAFC57B6C75E5BFBA1B58E3\",Key,\"HEX\",\"HEX\")\n\/\/\u8f93\u51fa abc\nW ##class(web.Util.Encryption).SM4Decode(\"1SyiaHuvxXtsdeW\/uhtY4w==\",Key,\"BASE64\",\"HEX\")\n\/\/\u8f93\u51fa abc\nW ##class(web.Util.Encryption).SM4Decode(\"50B3EBF9E5A6E1512B2EBF1EB130D844\",\"1234567887654321\",\"HEX\")\n\/\/\u8f93\u51fa myname\u6211\n<\/code><\/pre>\n<p>\u53ef\u4ee5\u901a\u8fc7<a href='https:\/\/the-x.cn\/cryptography\/Sm4.aspx'>\u6b64\u7f51\u7ad9<\/a>\u5bf9\u6bd4\u52a0\u5bc6\u7ed3\u679c<br \/>\n<img decoding=\"async\" src=\"\/\/hisui.cn\/wp-content\/uploads\/2022\/11\/sm4.png\" alt=\"sm4encode\" \/><\/p>\n<h3>\u516d. AES\u52a0\u5bc6<\/h3>\n<h5>1. AES\/CBC\/PKCS7Padding\u52a0\u5bc6<\/h5>\n<pre><code class=\"language-javascript line-numbers\">\/\/\/ @Param {String} SrcStr  \u539f\u6587\n\/\/\/ @Param {String} Key  \u52a0\u5bc6\u94a5(\u957f\u5ea616)\n\/\/\/ @Param {String} VI  \u504f\u79fb\u91cf\n\/\/\/ @Param {String} \u9ed8\u8ba4\"ORIGIN\/BASE64\/UTF8\" \"key\u503c\u7c7b\u578bORIGIN|HEX|BASE64 \/ \u8fd4\u56de\u503c\u7c7b\u578bHEX|BASE64 \/ \u539f\u6587\u7684\u7f16\u7801UTF8\"\nw ##class(web.Util.Encryption).AESCBCPKCS7Encode(\"myname\u6211\",\"1234567887654321\",\"1234567890654321\")\n\/\/ \u8f93\u51fa 0oyo6n7skwMmaqys7\/dN+g==\n<\/code><\/pre>\n<h5>2. AES\/CBC\/PKCS7Padding\u89e3\u5bc6<\/h5>\n<pre><code class=\"language-javascript line-numbers\">\/\/\/ @Param {String} EncStr  \u5bc6\u6587\n\/\/\/ @Param {String} Key  \u52a0\u5bc6\u94a5(\u957f\u5ea616)\n\/\/\/ @Param {String} VI  \u504f\u79fb\u91cf\n\/\/\/ @Param {String} \u9ed8\u8ba4\"ORIGIN\/BASE64\/UTF8\" \"key\u503c\u7c7b\u578bORIGIN|HEX|BASE64  \/  \u52a0\u5bc6\u4e32\u7c7b\u578bHEX|BASE64 \/  \u539f\u6587\u7f16\u7801UTF8\"\nw ##class(web.Util.Encryption).AESCBCPKCS7Decode(\"0oyo6n7skwMmaqys7\/dN+g==\",\"1234567887654321\",\"1234567890654321\")\n\/\/ \u8f93\u51fa myname\u6211\n<\/code><\/pre>\n<p>\u53ef\u4ee5\u901a\u8fc7<a href='https:\/\/the-x.cn\/cryptography\/Aes.aspx'>\u6b64\u7f51\u7ad9<\/a>\u5bf9\u6bd4\u52a0\u5bc6\u7ed3\u679c<br \/>\n<img decoding=\"async\" src=\"\/\/hisui.cn\/wp-content\/uploads\/2022\/11\/CBC.png\" alt=\"aescbc\" \/><\/p>\n<h5>3. AES\/CBC\/ZEROPadding\u52a0\u5bc6<\/h5>\n<pre><code class=\"language-javascript line-numbers\">\/\/\/ @Param {String} EncStr  \u5bc6\u6587\n\/\/\/ @Param {String} Key  \u52a0\u5bc6\u94a5(\u957f\u5ea616)\n\/\/\/ @Param {String} VI  \u504f\u79fb\u91cf\n\/\/\/ @Param {String} \u9ed8\u8ba4\"ORIGIN\/BASE64\/UTF8\" \"key\u503c\u7c7b\u578bORIGIN|HEX|BASE64  \/  \u52a0\u5bc6\u4e32\u7c7b\u578bHEX|BASE64 \/  \u539f\u6587\u7f16\u7801UTF8\"\nw ##class(web.Util.Encryption).AESCBCZeroEncode(\"\u6c49\u5b57\",\"1234567887654321\",\"1234567890123456\")\n\/\/ \u8f93\u51famKD4kHVZa36eSK7uZ+2hkhEy9SgH5ZOfmLAaB8aVJ4k=\n\/\/ \u5f97\u5230\u7684\u7ed3\u679c\u4f1a\u6bd4\u7f51\u4e0a\u957f\uff0c\u89e3\u5bc6\u53d1\u73b0\u591a\u51fa16\u4e2a$chat(16)\u3002\u4e0d\u5f71\u54cd\u4e09\u65b9\u4f7f\u7528\n<\/code><\/pre>\n<h3>\u4e03. \u5173\u4e8eRSA<\/h3>\n<p>\u5173\u4e8eRSA\u53ef\u4ee5\u53c2\u8003zhangxiang\u5199\u7684<a href='https:\/\/blog.csdn.net\/zhangxiang_ouc\/article\/details\/122581540'>\u8fd9\u7bc7\u6587\u7ae0<\/a>\uff0c\u8bb2\u89e3\u4e86\u5982\u4f55\u751f\u6210\u8bc1\u4e66\u4e0e\u52a0\u89e3\u5bc6<\/p>\n<h3>\u516b\u3001SHA256\u7b7e\u540d<\/h3>\n<pre><code class=\"language-csharp line-numbers\">\/\/ \u52a0\u5bc6\u5e76\u8f6c\u6210\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\nW ##class(web.Util.Encryption).SHA256(\"abcd\",\"HEX\")\n\/\/ \u8fd4\u56de88D4266FD4E6338D13B845FCF289579D209C897823B9217DA3E161936F031589\n\/\/ \u52a0\u5bc6\u5e76\u8f6c\u6210BASE64\u5b57\u7b26\u4e32\nW ##class(web.Util.Encryption).SHA256(\"abcd\",\"BASE64\")\n\/\/ \u8fd4\u56deiNQmb9TmM40TuEX88olXnSCciXgjuSF9o+Fhk28DFYk=\n<\/code><\/pre>\n<h3>\u4e5d. \u654f\u611f\u6570\u636e\u52a0\u5bc6\u4e0e\u89e3\u5bc6<\/h3>\n<h4>1. \u52a0\u5bc6\u654f\u611f\u6570\u636e\u65b9\u6cd5<\/h4>\n<pre><code class=\"language-csharp line-numbers\">Set EncPatTel = ##class(websys.SensitiveProps).Encrypt(\"18366666666\")\n\/\/ \u8fd4\u56de $1b$$C8A05C2C8CAA7EF97CB26D4D8A390603\n<\/code><\/pre>\n<h4>2. \u89e3\u5bc6\u6570\u636e<\/h4>\n<pre><code class=\"language-csharp line-numbers\">\/\/\/ \u5bf9\u52a0\u5bc6\u6570\u636e\u8fdb\u884c\u5bf9\u5e94\u7b97\u6cd5\u89e3\u5bc6,\u5982\u679c\u6ca1\u6709\u52a0\u5bc6\u5219\u539f\u6837\u8fd8\u56de\nSet PatTel = ##class(websys.SensitiveProps).Decrypt(\"$1b$$C8A05C2C8CAA7EF97CB26D4D8A390603\")\n\/\/ \u8fd4\u56de 18366666666\n<\/code><\/pre>\n<h4>3. \u52a0\u661f\u65b9\u6cd5<\/h4>\n<pre><code class=\"language-csharp line-numbers\">\/\/\/ @param  SPCode    \u654f\u611f\u5b57\u6bb5\u7ef4\u62a4\u754c\u9762\u7684\u4ee3\u7801 \u5fc5\u586b\n\/\/\/ @param  PatientID \u75c5\u4ebaid  \u5fc5\u586b\n\/\/\/ @param  EpisodeID \u5c31\u8bcaid \u53ef\u9009\nSet Rtn = ##class(websys.SensitiveProps).GetFormatValue(\"PatTel\",1)  \/\/ \u6309\u683c\u5f0f\u5f97\u5230ID\u4e3a1\u7684\u60a3\u8005\u52a0\u661f\u7535\u8bdd\n\/\/ \u8fd4\u56de 183****6666\n<\/code><\/pre>\n<h3>\u5341. \u4ee3\u7801\u6807\u7b7e\u5185\u5bb9\u4f20\u5230\u540e\u53f0<\/h3>\n<p>html\uff0csql\u6216js\u7c7b\u654f\u611f\u6ce8\u5165\u8bed\u53e5\u4f1a\u88ab\u7cfb\u7edf\u8fc7\u6ee4\u6389\uff0c\u53ef\u4ee5\u524d\u53f0\u5148\u8f6cbase64\u5b57\u7b26\u4e32\uff0c\u4f20\u5230\u540e\u53f0\u540e\uff0c\u518d\u8f6c\u56de\u7684\u65b9\u5f0f\u5904\u7406\u3002<br \/>\n\u524d\u53f0<\/p>\n<pre><code class=\"language-js line-numbers\">var orderXmlBase = btoa(encodeURIComponent(orderXml))\n\/\/ ajax\u53d1\u9001\u5230\u540e\u53f0\n<\/code><\/pre>\n<p>\u540e\u53f0<\/p>\n<pre><code class=\"language-csharp line-numbers\">Set orderXml = ##class(web.Util.Encryption).Base64Decode(orderXmlBase)\nSet srcOrderXml = ##class(ext.util.String).UnescapeURL(orderXml,\"UTF8\")\n\/\/ \u7ee7\u7eed\u5904\u7406\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Cache\u4e2d\u5e38\u7528\u65b9\u6cd5<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,1],"tags":[163,64,138,164,65,160,161,213,169,212,162,174,172,63,66],"class_list":["post-230","post","type-post","status-publish","format-standard","hentry","category-m_lang","category-uncategorized","tag-aes","tag-base","tag-base64","tag-cbc","tag-md5","tag-sm3","tag-sm4","tag-xss","tag-zero","tag-212","tag-162","tag-174","tag-172","tag-63","tag-66"],"_links":{"self":[{"href":"http:\/\/hisui.cn\/index.php?rest_route=\/wp\/v2\/posts\/230","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/hisui.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/hisui.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/hisui.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/hisui.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=230"}],"version-history":[{"count":0,"href":"http:\/\/hisui.cn\/index.php?rest_route=\/wp\/v2\/posts\/230\/revisions"}],"wp:attachment":[{"href":"http:\/\/hisui.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=230"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/hisui.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=230"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/hisui.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=230"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}