{"id":32926,"date":"2024-11-25T09:49:40","date_gmt":"2024-11-25T01:49:40","guid":{"rendered":"https:\/\/fwq.ai\/blog\/32926\/"},"modified":"2024-11-25T09:49:40","modified_gmt":"2024-11-25T01:49:40","slug":"%e5%b0%8f%e7%a8%8b%e5%ba%8f%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8md5","status":"publish","type":"post","link":"https:\/\/fwq.ai\/blog\/32926\/","title":{"rendered":"\u5c0f\u7a0b\u5e8f\u5982\u4f55\u4f7f\u7528md5"},"content":{"rendered":"<p style=\"text-align: center\"><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/000\/040\/5e7c189ce9d0e515.jpg\" class=\"aligncenter\" title=\"\u5c0f\u7a0b\u5e8f\u5982\u4f55\u4f7f\u7528md5\u63d2\u56fe\" alt=\"\u5c0f\u7a0b\u5e8f\u5982\u4f55\u4f7f\u7528md5\u63d2\u56fe\" \/><\/p>\n<p><strong>\u5c0f\u7a0b\u5e8f\u5982\u4f55\u4f7f\u7528md5 &nbsp; &nbsp;<\/strong><\/p>\n<p>1\u3001\u4e0b\u8f7dMD5\u6e90\u6587\u4ef6(JS);<\/p>\n<p>2\u3001\u5728\u5c0f\u7a0b\u5e8f\u6a21\u5757\u4e2d\u4f7f\u7528require\u5f15\u5165\u5916\u90e8\u6a21\u5757\uff1b\u4e5f\u53ef\u4ee5\u5728app.js\u4e2d\u76f4\u63a5\u5168\u5c40\u5f15\u5165md5.js\u6587\u4ef6\u3002<\/p>\n<p>\u56e0\u4e3a\u6e90md5.js\u4e2d\u6ca1\u6709\u5bf9\u6a21\u5757\u8fdb\u884c\u8f93\u51fa\uff0c\u5982\u679c\u4f7f\u7528require\u9700\u8981export\uff0c\u6240\u4ee5\u5728md5.js\u4e2d\u9700\u8981\u52a0\u5165\u4ee5\u4e0b\u4ee3\u7801\uff1a<\/p>\n<pre>module.exports&nbsp;=&nbsp;&nbsp;{\n&nbsp;&nbsp;hexMD5:&nbsp;hex_md5,&nbsp;\/\/\u9700\u8981\u8f93\u51fa\u7684\u52a0\u5bc6\u7b97\u6cd5\uff0c\u6211\u8fd9\u8fb9\u53ea\u5199\u4e86\u6211\u9700\u8981\u5f97\u4e24\u79cd\n&nbsp;&nbsp;b64Md5:&nbsp;b64_md5,\n}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u5728js\u6587\u4ef6\u4e2d\u4f7f\u7528require\u5f15\u5165md5:<\/p>\n<p>\u63a8\u8350\u5b66\u4e60\uff1a<\/p>\n<pre>const&nbsp;md5&nbsp;=&nbsp;require('..\/..\/assets\/js\/md5\/md5.js');<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u4f7f\u7528\uff1a<\/p>\n<pre>let&nbsp;b64&nbsp;=&nbsp;md5.b64Md5(code);&nbsp;\/\/code\u9700\u8981\u52a0\u5bc6\u7684\u6570\u636e<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u4e0b\u9762\u662f\u6211\u7684\u6587\u4ef6\u7ed3\u6784\uff1a<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/image\/971\/736\/554\/1585191026826198.png\" class=\"aligncenter\" title=\"\u5c0f\u7a0b\u5e8f\u5982\u4f55\u4f7f\u7528md5\u63d2\u56fe1\" alt=\"\u5c0f\u7a0b\u5e8f\u5982\u4f55\u4f7f\u7528md5\u63d2\u56fe1\" \/><\/p>\n<pre>\/*\n&nbsp;*&nbsp;A&nbsp;JavaScript&nbsp;implementation&nbsp;of&nbsp;the&nbsp;RSA&nbsp;Data&nbsp;Security,&nbsp;Inc.&nbsp;MD5&nbsp;Message\n&nbsp;*&nbsp;Digest&nbsp;Algorithm,&nbsp;as&nbsp;defined&nbsp;in&nbsp;RFC&nbsp;1321.\n&nbsp;*&nbsp;Version&nbsp;2.1&nbsp;Copyright&nbsp;(C)&nbsp;Paul&nbsp;Johnston&nbsp;1999&nbsp;-&nbsp;2002.\n&nbsp;*&nbsp;Other&nbsp;contributors:&nbsp;Greg&nbsp;Holt,&nbsp;Andrew&nbsp;Kepert,&nbsp;Ydnar,&nbsp;Lostinet\n&nbsp;*&nbsp;Distributed&nbsp;under&nbsp;the&nbsp;BSD&nbsp;License\n&nbsp;*&nbsp;See&nbsp;http:\/\/pajhome.org.uk\/crypt\/md5&nbsp;for&nbsp;more&nbsp;info.\n&nbsp;*\/\n\n\/*\n&nbsp;*&nbsp;Configurable&nbsp;variables.&nbsp;You&nbsp;may&nbsp;need&nbsp;to&nbsp;tweak&nbsp;these&nbsp;to&nbsp;be&nbsp;compatible&nbsp;with\n&nbsp;*&nbsp;the&nbsp;server-side,&nbsp;but&nbsp;the&nbsp;defaults&nbsp;work&nbsp;in&nbsp;most&nbsp;cases.\n&nbsp;*\/\nvar&nbsp;hexcase&nbsp;=&nbsp;0;&nbsp;&nbsp;\/*&nbsp;hex&nbsp;output&nbsp;format.&nbsp;0&nbsp;-&nbsp;lowercase;&nbsp;1&nbsp;-&nbsp;uppercase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/\nvar&nbsp;b64pad&nbsp;&nbsp;=&nbsp;\"\";&nbsp;\/*&nbsp;base-64&nbsp;pad&nbsp;character.&nbsp;\"=\"&nbsp;for&nbsp;strict&nbsp;RFC&nbsp;compliance&nbsp;&nbsp;&nbsp;*\/\nvar&nbsp;chrsz&nbsp;&nbsp;&nbsp;=&nbsp;8;&nbsp;&nbsp;\/*&nbsp;bits&nbsp;per&nbsp;input&nbsp;character.&nbsp;8&nbsp;-&nbsp;ASCII;&nbsp;16&nbsp;-&nbsp;Unicode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/\n\n\/*\n&nbsp;*&nbsp;These&nbsp;are&nbsp;the&nbsp;functions&nbsp;you'll&nbsp;usually&nbsp;want&nbsp;to&nbsp;call\n&nbsp;*&nbsp;They&nbsp;take&nbsp;string&nbsp;arguments&nbsp;and&nbsp;return&nbsp;either&nbsp;hex&nbsp;or&nbsp;base-64&nbsp;encoded&nbsp;strings\n&nbsp;*\/\nfunction&nbsp;hex_md5(s){&nbsp;return&nbsp;binl2hex(core_md5(str2binl(s),&nbsp;s.length&nbsp;*&nbsp;chrsz));}\nfunction&nbsp;b64_md5(s){&nbsp;return&nbsp;binl2b64(core_md5(str2binl(s),&nbsp;s.length&nbsp;*&nbsp;chrsz));}\nfunction&nbsp;str_md5(s){&nbsp;return&nbsp;binl2str(core_md5(str2binl(s),&nbsp;s.length&nbsp;*&nbsp;chrsz));}\nfunction&nbsp;hex_hmac_md5(key,&nbsp;data)&nbsp;{&nbsp;return&nbsp;binl2hex(core_hmac_md5(key,&nbsp;data));&nbsp;}\nfunction&nbsp;b64_hmac_md5(key,&nbsp;data)&nbsp;{&nbsp;return&nbsp;binl2b64(core_hmac_md5(key,&nbsp;data));&nbsp;}\nfunction&nbsp;str_hmac_md5(key,&nbsp;data)&nbsp;{&nbsp;return&nbsp;binl2str(core_hmac_md5(key,&nbsp;data));&nbsp;}\n\n\/*\n&nbsp;*&nbsp;Perform&nbsp;a&nbsp;simple&nbsp;self-test&nbsp;to&nbsp;see&nbsp;if&nbsp;the&nbsp;VM&nbsp;is&nbsp;working\n&nbsp;*\/\nfunction&nbsp;md5_vm_test()\n{\n&nbsp;&nbsp;return&nbsp;hex_md5(\"abc\")&nbsp;==&nbsp;\"900150983cd24fb0d6963f7d28e17f72\";\n}\n\n\/*\n&nbsp;*&nbsp;Calculate&nbsp;the&nbsp;MD5&nbsp;of&nbsp;an&nbsp;array&nbsp;of&nbsp;little-endian&nbsp;words,&nbsp;and&nbsp;a&nbsp;bit&nbsp;length\n&nbsp;*\/\nfunction&nbsp;core_md5(x,&nbsp;len)\n{\n&nbsp;&nbsp;\/*&nbsp;append&nbsp;padding&nbsp;*\/\n&nbsp;&nbsp;x[len&nbsp;&amp;gt;&amp;gt;&nbsp;5]&nbsp;|=&nbsp;0x80&nbsp;&amp;gt;&amp;gt;&nbsp;9)&nbsp;&nbsp;16)&nbsp;bkey&nbsp;=&nbsp;core_md5(bkey,&nbsp;key.length&nbsp;*&nbsp;chrsz);\n\n&nbsp;&nbsp;var&nbsp;ipad&nbsp;=&nbsp;Array(16),&nbsp;opad&nbsp;=&nbsp;Array(16);\n&nbsp;&nbsp;for(var&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&amp;gt;&nbsp;16)&nbsp;+&nbsp;(y&nbsp;&amp;gt;&amp;gt;&nbsp;16)&nbsp;+&nbsp;(lsw&nbsp;&amp;gt;&amp;gt;&nbsp;16);\n&nbsp;&nbsp;return&nbsp;(msw&nbsp;&amp;gt;&amp;gt;&nbsp;(32&nbsp;-&nbsp;cnt));\n}\n\n\/*\n&nbsp;*&nbsp;Convert&nbsp;a&nbsp;string&nbsp;to&nbsp;an&nbsp;array&nbsp;of&nbsp;little-endian&nbsp;words\n&nbsp;*&nbsp;If&nbsp;chrsz&nbsp;is&nbsp;ASCII,&nbsp;characters&nbsp;&amp;gt;255&nbsp;have&nbsp;their&nbsp;hi-byte&nbsp;silently&nbsp;ignored.\n&nbsp;*\/\nfunction&nbsp;str2binl(str)\n{\n&nbsp;&nbsp;var&nbsp;bin&nbsp;=&nbsp;Array();\n&nbsp;&nbsp;var&nbsp;mask&nbsp;=&nbsp;(1&nbsp;&amp;gt;5]&nbsp;|=&nbsp;(str.charCodeAt(i&nbsp;\/&nbsp;chrsz)&nbsp;&amp;amp;&nbsp;mask)&nbsp;&amp;gt;5]&nbsp;&amp;gt;&amp;gt;&amp;gt;&nbsp;(i&nbsp;%&nbsp;32))&nbsp;&amp;amp;&nbsp;mask);\n&nbsp;&nbsp;return&nbsp;str;\n}\n\n\/*\n&nbsp;*&nbsp;Convert&nbsp;an&nbsp;array&nbsp;of&nbsp;little-endian&nbsp;words&nbsp;to&nbsp;a&nbsp;hex&nbsp;string.\n&nbsp;*\/\nfunction&nbsp;binl2hex(binarray)\n{\n&nbsp;&nbsp;var&nbsp;hex_tab&nbsp;=&nbsp;hexcase&nbsp;?&nbsp;\"0123456789ABCDEF\"&nbsp;:&nbsp;\"0123456789abcdef\";\n&nbsp;&nbsp;var&nbsp;str&nbsp;=&nbsp;\"\";\n&nbsp;&nbsp;for(var&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&amp;gt;2]&nbsp;&amp;gt;&amp;gt;&nbsp;((i%4)*8+4))&nbsp;&amp;amp;&nbsp;0xF)&nbsp;+\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hex_tab.charAt((binarray[i&amp;gt;&amp;gt;2]&nbsp;&amp;gt;&amp;gt;&nbsp;((i%4)*8&nbsp;&nbsp;))&nbsp;&amp;amp;&nbsp;0xF);\n&nbsp;&nbsp;}\n&nbsp;&nbsp;return&nbsp;str;\n}\n\n\/*\n&nbsp;*&nbsp;Convert&nbsp;an&nbsp;array&nbsp;of&nbsp;little-endian&nbsp;words&nbsp;to&nbsp;a&nbsp;base-64&nbsp;string\n&nbsp;*\/\nfunction&nbsp;binl2b64(binarray)\n{\n&nbsp;&nbsp;var&nbsp;tab&nbsp;=&nbsp;\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+\/\";\n&nbsp;&nbsp;var&nbsp;str&nbsp;=&nbsp;\"\";\n&nbsp;&nbsp;for(var&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&amp;gt;&nbsp;2]&nbsp;&amp;gt;&amp;gt;&nbsp;8&nbsp;*&nbsp;(&nbsp;i&nbsp;&nbsp;&nbsp;%4))&nbsp;&amp;amp;&nbsp;0xFF)&nbsp;&amp;gt;&nbsp;2]&nbsp;&amp;gt;&amp;gt;&nbsp;8&nbsp;*&nbsp;((i+1)%4))&nbsp;&amp;amp;&nbsp;0xFF)&nbsp;&amp;gt;&nbsp;2]&nbsp;&amp;gt;&amp;gt;&nbsp;8&nbsp;*&nbsp;((i+2)%4))&nbsp;&amp;amp;&nbsp;0xFF);\n&nbsp;&nbsp;&nbsp;&nbsp;for(var&nbsp;j&nbsp;=&nbsp;0;&nbsp;j&nbsp;&nbsp;binarray.length&nbsp;*&nbsp;32)&nbsp;str&nbsp;+=&nbsp;b64pad;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;str&nbsp;+=&nbsp;tab.charAt((triplet&nbsp;&amp;gt;&amp;gt;&nbsp;6*(3-j))&nbsp;&amp;amp;&nbsp;0x3F);\n&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;}\n&nbsp;&nbsp;return&nbsp;str;\n}\n\n\nmodule.exports&nbsp;=&nbsp;&nbsp;{\n&nbsp;&nbsp;hexMD5:&nbsp;hex_md5,\n&nbsp;&nbsp;b64Md5:&nbsp;b64_md5,\n}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u4ee5\u4e0a\u5c31\u662f\u5c0f\u7a0b\u5e8f\u5982\u4f55\u4f7f\u7528md5\u7684\u8be6\u7ec6\u5185\u5bb9\uff0c\u66f4\u591a\u8bf7\u5173\u6ce8\u7c73\u4e91\u5176\u5b83\u76f8\u5173\u6587\u7ae0\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5c0f\u7a0b\u5e8f\u5982\u4f55\u4f7f\u7528md5 &nbsp; &nbsp; 1\u3001\u4e0b\u8f7dMD5\u6e90\u6587\u4ef6(JS); 2\u3001\u5728\u5c0f\u7a0b\u5e8f\u6a21\u5757\u4e2d\u4f7f\u7528require\u5f15\u5165\u5916\u90e8\u6a21\u5757\uff1b\u4e5f\u53ef\u4ee5\u5728app.js\u4e2d\u76f4\u63a5\u5168\u5c40\u5f15\u5165md5.js\u6587\u4ef6\u3002 \u56e0\u4e3a\u6e90md5.js\u4e2d\u6ca1\u6709\u5bf9\u6a21\u5757\u8fdb\u884c\u8f93\u51fa\uff0c\u5982\u679c\u4f7f\u7528require\u9700\u8981export\uff0c\u6240\u4ee5\u5728md5.js\u4e2d\u9700\u8981\u52a0\u5165\u4ee5\u4e0b\u4ee3\u7801\uff1a module.exports&nbsp;=&nbsp;&nbsp;{ &nbsp;&nbsp;hexMD5:&nbsp;hex_md5,&nbsp;\/\/\u9700\u8981\u8f93\u51fa\u7684\u52a0\u5bc6\u7b97\u6cd5\uff0c\u6211\u8fd9\u8fb9\u53ea\u5199\u4e86\u6211\u9700\u8981\u5f97\u4e24\u79cd &nbsp;&nbsp;b64Md5:&nbsp;b64_md5, } \u767b\u5f55\u540e\u590d\u5236 \u5728js\u6587\u4ef6\u4e2d\u4f7f\u7528require\u5f15\u5165md5: \u63a8\u8350\u5b66\u4e60\uff1a const&nbsp;md5&nbsp;=&nbsp;require(&#8216;..\/..\/assets\/js\/md5\/md5.js&#8217;); \u767b\u5f55\u540e\u590d\u5236 \u4f7f\u7528\uff1a let&nbsp;b64&nbsp;=&nbsp;md5.b64Md5(code);&nbsp;\/\/code\u9700\u8981\u52a0\u5bc6\u7684\u6570\u636e \u767b\u5f55\u540e\u590d\u5236 \u4e0b\u9762\u662f\u6211\u7684\u6587\u4ef6\u7ed3\u6784\uff1a \/* &nbsp;*&nbsp;A&nbsp;JavaScript&nbsp;implementation&nbsp;of&nbsp;the&nbsp;RSA&nbsp;Data&nbsp;Security,&nbsp;Inc.&nbsp;MD5&nbsp;Message &nbsp;*&nbsp;Digest&nbsp;Algorithm,&nbsp;as&nbsp;defined&nbsp;in&nbsp;RFC&nbsp;1321. &nbsp;*&nbsp;Version&nbsp;2.1&nbsp;Copyright&nbsp;(C)&nbsp;Paul&nbsp;Johnston&nbsp;1999&nbsp;&#8211;&nbsp;2002. &nbsp;*&nbsp;Other&nbsp;contributors:&nbsp;Greg&nbsp;Holt,&nbsp;Andrew&nbsp;Kepert,&nbsp;Ydnar,&nbsp;Lostinet &nbsp;*&nbsp;Distributed&nbsp;under&nbsp;the&nbsp;BSD&nbsp;License &nbsp;*&nbsp;See&nbsp;http:\/\/pajhome.org.uk\/crypt\/md5&nbsp;for&nbsp;more&nbsp;info. &nbsp;*\/ \/* &nbsp;*&nbsp;Configurable&nbsp;variables.&nbsp;You&nbsp;may&nbsp;need&nbsp;to&nbsp;tweak&nbsp;these&nbsp;to&nbsp;be&nbsp;compatible&nbsp;with &nbsp;*&nbsp;the&nbsp;server-side,&nbsp;but&nbsp;the&nbsp;defaults&nbsp;work&nbsp;in&nbsp;most&nbsp;cases. &nbsp;*\/ var&nbsp;hexcase&nbsp;=&nbsp;0;&nbsp;&nbsp;\/*&nbsp;hex&nbsp;output&nbsp;format.&nbsp;0&nbsp;&#8211;&nbsp;lowercase;&nbsp;1&nbsp;&#8211;&nbsp;uppercase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/ var&nbsp;b64pad&nbsp;&nbsp;=&nbsp;&#8220;&#8221;;&nbsp;\/*&nbsp;base-64&nbsp;pad&nbsp;character.&nbsp;&#8220;=&#8221;&nbsp;for&nbsp;strict&nbsp;RFC&nbsp;compliance&nbsp;&nbsp;&nbsp;*\/ var&nbsp;chrsz&nbsp;&nbsp;&nbsp;=&nbsp;8;&nbsp;&nbsp;\/*&nbsp;bits&nbsp;per&nbsp;input&nbsp;character.&nbsp;8&nbsp;&#8211;&nbsp;ASCII;&nbsp;16&nbsp;&#8211;&nbsp;Unicode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/ \/* &nbsp;*&nbsp;These&nbsp;are&nbsp;the&nbsp;functions&nbsp;you&#8217;ll&nbsp;usually&nbsp;want&nbsp;to&nbsp;call &nbsp;*&nbsp;They&nbsp;take&nbsp;string&nbsp;arguments&nbsp;and&nbsp;return&nbsp;either&nbsp;hex&nbsp;or&nbsp;base-64&nbsp;encoded&nbsp;strings &nbsp;*\/ function&nbsp;hex_md5(s){&nbsp;return&nbsp;binl2hex(core_md5(str2binl(s),&nbsp;s.length&nbsp;*&nbsp;chrsz));} function&nbsp;b64_md5(s){&nbsp;return&nbsp;binl2b64(core_md5(str2binl(s),&nbsp;s.length&nbsp;*&nbsp;chrsz));} function&nbsp;str_md5(s){&nbsp;return&nbsp;binl2str(core_md5(str2binl(s),&nbsp;s.length&nbsp;*&nbsp;chrsz));} function&nbsp;hex_hmac_md5(key,&nbsp;data)&nbsp;{&nbsp;return&nbsp;binl2hex(core_hmac_md5(key,&nbsp;data));&nbsp;} function&nbsp;b64_hmac_md5(key,&nbsp;data)&nbsp;{&nbsp;return&nbsp;binl2b64(core_hmac_md5(key,&nbsp;data));&nbsp;} function&nbsp;str_hmac_md5(key,&nbsp;data)&nbsp;{&nbsp;return&nbsp;binl2str(core_hmac_md5(key,&nbsp;data));&nbsp;} \/* &nbsp;*&nbsp;Perform&nbsp;a&nbsp;simple&nbsp;self-test&nbsp;to&nbsp;see&nbsp;if&nbsp;the&nbsp;VM&nbsp;is&nbsp;working &nbsp;*\/ function&nbsp;md5_vm_test() { &nbsp;&nbsp;return&nbsp;hex_md5(&#8220;abc&#8221;)&nbsp;==&nbsp;&#8220;900150983cd24fb0d6963f7d28e17f72&#8221;; } \/* &nbsp;*&nbsp;Calculate&nbsp;the&nbsp;MD5&nbsp;of&nbsp;an&nbsp;array&nbsp;of&nbsp;little-endian&nbsp;words,&nbsp;and&nbsp;a&nbsp;bit&nbsp;length &nbsp;*\/ function&nbsp;core_md5(x,&nbsp;len) [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[],"class_list":["post-32926","post","type-post","status-publish","format-standard","hentry","category-19"],"_links":{"self":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/32926","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/comments?post=32926"}],"version-history":[{"count":0,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/32926\/revisions"}],"wp:attachment":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/media?parent=32926"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/categories?post=32926"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/tags?post=32926"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}