{"id":3207,"date":"2018-03-01T12:17:59","date_gmt":"2018-03-01T04:17:59","guid":{"rendered":"http:\/\/cn.hostease.com\/xueyuan\/?p=3207"},"modified":"2018-03-01T12:17:59","modified_gmt":"2018-03-01T04:17:59","slug":"rsa%e9%9d%9e%e5%af%b9%e7%a7%b0%e7%ae%97%e6%b3%95%e5%ae%9e%e7%8e%b0http%e5%af%86%e7%a0%81%e5%8a%a0%e5%af%86%e4%bc%a0%e8%be%93","status":"publish","type":"post","link":"https:\/\/cn.hostease.com\/xueyuan\/jishu\/fuwuqi\/rsa%e9%9d%9e%e5%af%b9%e7%a7%b0%e7%ae%97%e6%b3%95%e5%ae%9e%e7%8e%b0http%e5%af%86%e7%a0%81%e5%8a%a0%e5%af%86%e4%bc%a0%e8%be%93\/","title":{"rendered":"RSA\u975e\u5bf9\u79f0\u7b97\u6cd5\u5b9e\u73b0HTTP\u5bc6\u7801\u52a0\u5bc6\u4f20\u8f93"},"content":{"rendered":"<p>\u76ee\u524d\u4e00\u822c\u5e10\u53f7\u7cfb\u7edf\uff0c\u90fd\u662f<a href=\"https:\/\/zh.wikipedia.org\/wiki\/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%AE%89%E5%85%A8%E5%8D%8F%E8%AE%AE\" target=\"_blank\">https<\/a>\u6765\u4f20\u8f93\u8d26\u6237\u6027\u606f\uff0c\u7533\u8bf7\u4e00\u4e2ahttps\u8bc1\u4e66\u4e5f\u4e0d\u8d35\u3002\u4f46\u662f\u7f51\u7ad9\u7684\u5176\u5b83\u529f\u80fd\u5e76\u4e0d\u9700\u8981\u8d70https\u534f\u8bae\uff0chttps\u548chttp\u6df7\u5e03\u6bd4\u8f83\u9ebb\u70e6\uff0c\u6240\u4ee5\u51b3\u5b9a\u5148\u5b9e\u73b0\u4e00\u4e2ahttp\u534f\u8bae\u4f20\u8f93RSA\u975e\u5bf9\u79f0\u5bc6\u94a5\u7b97\u6cd5\u52a0\u5bc6\u5bc6\u7801\u7684\u65b9\u6848\u3002\u8fd9\u6837\u505a\u53ea\u80fd\u8bf4\u662f\u4fdd\u8bc1\u4e0d\u660e\u6587\u4f20\u5bc6\u7801\uff0c\u4f46\u662f\u5e76\u4e0d\u80fd\u9632\u8eab\u4efd\u4f2a\u9020\uff0c\u6240\u4ee5\u5176\u5b9e\u8fd8\u662f\u4e0d\u5b89\u5168\u7684\uff0c\u53ea\u662f\u76ee\u524d\u4ea7\u54c1\u80fd\u63a5\u53d7\uff0c\u7b97\u662f\u4e00\u4e2a\u8fc7\u6e21\u671f\u5427\u3002\u6709\u9700\u8981\u7684\u8bdd\u8fd8\u662f\u8981\u6539\u6210https\u7684\u3002<\/p>\n<p>\u5173\u4e8ersa\u7b97\u6cd5\uff0c\u5177\u4f53\u53c2\u8003<a href=\"https:\/\/zh.wikipedia.org\/wiki\/RSA%E5%8A%A0%E5%AF%86%E6%BC%94%E7%AE%97%E6%B3%95\" target=\"_blank\">\u7ef4\u57fa\u767e\u79d1<\/a>\u76f8\u5173\u7684\u4ecb\u7ecd\u3002\u7b80\u5355\u6765\u8bf4\uff0c\u7528rsa\u7b97\u6cd5\u4ea7\u751f\u4e00\u5bf9\u516c\u94a5\u548c\u79c1\u94a5\uff0c\u901a\u4fe1\u53cc\u65b9A\u548cB\uff0cA\u7528\u516c\u94a5\u52a0\u5bc6\u8981\u53d1\u9001\u7684\u6570\u636e\uff0cB\u7528\u79c1\u94a5\u6765\u89e3\u5bc6A\u53d1\u8fc7\u6765\u7684\u5bc6\u6587\uff0c\u4ece\u800c\u83b7\u5f97a\u60f3\u8981\u53d1\u8fc7\u6765\u7684\u6570\u636e\u3002\u4fdd\u8bc1rsa\u5bc6\u6587\u4e0d\u5bb9\u6613\u88ab\u7834\u89e3\u7684\u7406\u8bba\u4f9d\u636e\u662f\u5bf9\u6781\u5927\u6574\u6570\u505a<a class=\"mw-redirect\" title=\"\u56e0\u6570\u5206\u89e3\" href=\"https:\/\/zh.wikipedia.org\/wiki\/%E5%9B%A0%E6%95%B0%E5%88%86%E8%A7%A3\">\u56e0\u6570\u5206\u89e3<\/a>\u7684\u96be\u5ea6\u975e\u5e38\u5927\u3002<\/p>\n<p>\u4e0b\u9762\u5177\u4f53\u770b\u770b\u5b9e\u73b0\u8fc7\u7a0b\u3002\u8fd9\u91cc\u524d\u7aef\u7528\u5230rsa\u7684js\u5b9e\u73b0\u65b9\u6848<a href=\"https:\/\/github.com\/travist\/jsencrypt\" target=\"_blank\">jsencrpt.js<\/a>\u00a0\uff0c\u540e\u7aef\u7528php\u7684<a href=\"https:\/\/php.net\/manual\/zh\/function.openssl-pkey-new.php\" target=\"_blank\">open_pkey_new<\/a>\u7b49\u76f8\u5173\u65b9\u6cd5\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.linuxidc.com\/upload\/2018_02\/180211175072092.jpg\" alt=\"\" width=\"706\" vspace=\"5\" \/><\/p>\n<p>1.\u3010\u540e\u7aef\u3011\u5148\u770bphp\u751f\u6210\u516c\u94a5\u5bc6\u94a5\u5bf9\u76f8\u5173\u4ee3\u7801\uff1a<\/p>\n<div class=\"linuxidc_code\">\n<pre>function generatePubPri() {\r\n    $config = array(\"config\" =&gt; '\/path\/to\/openssl.cnf');    \r\n    $res = openssl_pkey_new($config);    \r\n    openssl_pkey_export($res,$pri, null, $config);    \r\n    $d= openssl_pkey_get_details($res);    \r\n    $pub = $d['key'];    \r\n\r\n    $pubFd = fopen(\"pub.txt\", \"w\");\r\n    fwrite($pubFd, $pub);\r\n    fclose($pubFd);\r\n\r\n    $priFd = fopen(\"pri.txt\", \"w\");\r\n    fwrite($priFd, $pri);\r\n    fclose($priFd);\r\n}<\/pre>\n<\/div>\n<p>\u8fd9\u91cc\u524d\u63d0\u662f\u8981\u5b89\u88c5openssl\uff0cphp\u8981\u52a0\u8f7dopenssl\u6269\u5c55\u3002\u6267\u884cgeneratePubPri\u5373\u53ef\u7684\u5230\u5982\u4e0b\u7684\u516c\u94a5\u5bc6\u94a5\u5bf9\uff0c\u6bcf\u6b21\u6267\u884c\u751f\u6210\u7684\u90fd\u4e0d\u4e00\u6837\u3002<\/p>\n<div class=\"linuxidc_code\">\n<pre>[xxx@xxx makedemo]$ cat pri.txt \r\n-----BEGIN RSA PRIVATE KEY-----\r\nMIICXQIBAAKBgQCq\/8HruBYhems80BluLiiP0uUTzM\/NJSFktzxA1rfzjhEg8z0W\r\nr0WAvIdbye2vTG0CYi6PGpjxgUkEVaaHLWEIMiA4g3TIFSUp5pmlWRpGNqilrxd4\r\nsXM5wzL13WkN1j6gBfZNJt62mO35A2Ubl9fbNw\/YU2KNPR0+EHP0Z6agmwIDAQAB\r\nAoGAViPcllf3ngnDN7FE\/kH2YO1GRMEp9Re9SLUdfzQrGl\/4tPaTUXgdtQpDzbNd\r\nLq97QnYfKiul3BLaq3pSF0p+1AUHtJby\/HT1Tqz0380x9Y+QKjJErePycTs28zIq\r\nFXmCMnOqxhaWPB89hxCIG0g7bVt9qGRDUZGY05kMwSM9gvECQQDcWjQoBfb4IQls\r\nRUQlprzizQD+S4cHJdxCq5qh7TqyH1IPoHq04tQsuYFVEH2+Z0Spimz\/oluNuDnJ\r\nNppKdJZdAkEAxqmbtzs9bPbyihb9qpsD8Sne1DIo5uRBJ7G4\/RE4vazaAXX9HUIS\r\nHZg\/To5XSGHzgQteIUXJRjpX5sYLCS8zVwJAQxElbMUb\/Tu47X5LlpYgSXuSANQm\r\nHfPVDWnDn+NfiRVlWaJDlsivQYmYprZlP02ZJW0fbdMRwJnA5NA8t8qydQJBAKZH\r\ndERLW0CG+b7HO46+rPAAAbhOO5n2VuqogJOhBIMN2HL8lN0WXh9TPTm9PiUhhzTt\r\nlN34kV0snEJWZQpM7YUCQQCgKhoAlp4DpcYvqq569UI7IE4ZL4l9RlkiNG1UYyda\r\niZoNVN7ji8K2ZvOKykJBwDeKIn4JrknUHrjZXEweRKEl\r\n-----END RSA PRIVATE KEY-----\r\n[xxx@xxx makedemo]$ cat pub.txt \r\n-----BEGIN PUBLIC KEY-----\r\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq\/8HruBYhems80BluLiiP0uUT\r\nzM\/NJSFktzxA1rfzjhEg8z0Wr0WAvIdbye2vTG0CYi6PGpjxgUkEVaaHLWEIMiA4\r\ng3TIFSUp5pmlWRpGNqilrxd4sXM5wzL13WkN1j6gBfZNJt62mO35A2Ubl9fbNw\/Y\r\nU2KNPR0+EHP0Z6agmwIDAQAB\r\n-----END PUBLIC KEY-----<\/pre>\n<\/div>\n<p>2.\u3010\u524d\u7aef\u3011\u7528\u516c\u94a5\u52a0\u5bc6\u4e00\u4e0b\u5bc6\u7801&#8221;123456&#8243;\u3002<\/p>\n<div class=\"linuxidc_code\">\n<pre>&lt;!DOCTYPE html&gt;\r\n&lt;html lang=\"en\"&gt;\r\n&lt;head&gt;\r\n    &lt;meta charset=\"UTF-8\"&gt;\r\n    &lt;title&gt;JS-&gt;jsencrypt.js RSA\u52a0\u5bc6\u5b9e\u73b0&lt;\/title&gt;\r\n    &lt;script type=\"text\/javascript\" src=\"jsencrypt.js\"&gt;&lt;\/script&gt;\r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n&lt;script type=\"text\/javascript\"&gt;\r\nvar crypt = new JSEncrypt(); \/\/\u65b0\u5efarsa\u5bf9\u8c61\r\nvar publickey = '\\\r\n-----BEGIN PUBLIC KEY-----\\\r\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq\/8HruBYhems80BluLiiP0uUT\\\r\nzM\/NJSFktzxA1rfzjhEg8z0Wr0WAvIdbye2vTG0CYi6PGpjxgUkEVaaHLWEIMiA4\\\r\ng3TIFSUp5pmlWRpGNqilrxd4sXM5wzL13WkN1j6gBfZNJt62mO35A2Ubl9fbNw\/Y\\\r\nU2KNPR0+EHP0Z6agmwIDAQAB\\\r\n-----END PUBLIC KEY-----\\\r\n        ';\r\ncrypt.setPublicKey(publickey);\/\/\u6dfb\u52a0\u6765\u81ea\u670d\u52a1\u7aef\u7684publickey\r\nvar result = crypt.encrypt('123456'); \/\/\u8fd4\u56de\u503c\u4e3a\u52a0\u5bc6\u540e\u7684\u7ed3\u679c\r\nconsole.log(result);\r\n&lt;\/script&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;<\/pre>\n<\/div>\n<p>\u5728\u6d4f\u89c8\u5668\u91cc\u8bbf\u95ee\u540e\uff0c\u63a7\u5236\u53f0\u4f1a\u6253\u5370\u51fa\u5982\u4e0b\u7684\u52a0\u5bc6\u5b57\u7b26\u4e32\uff1a<\/p>\n<div class=\"linuxidc_code\">\n<pre>SonHPbJpQBwygjZ5ZMtybfLEylnNCsd3poBsNxSt3QkUSDe+Pf7lf4JJIot9Ybd7mAXiOUgGZR7VctCSJhzzZQWNZp1or6h6dsYoFHE\/dbDHIxJGcXMNfv5BqrfAMGqkQVvyrED3NHcrgXokataRJOrsU7yvKpQKW6e3j+zcZD8=<\/pre>\n<\/div>\n<div class=\"linuxidc_code\">\n<pre>eRA40\/RbbbqtuEC10Ee3NVDsnpfgibn8nRuTaPmvXI1XjVFX8pjwtMxiuT9xaBfX8K+LI\/6ccgghYyJdxjd8V+DyxBPz6\/QzT3f5eoOz9ULD85r0K\/\/BuKvuTiyQ\/NajProvPN3ns6UzxECmuFg0UNtrMNkOdFRpaAtueadKJDU=<\/pre>\n<\/div>\n<div class=\"linuxidc_code\">\n<pre>Tqgagyx5DlDLI\/tcxYsnN\/3AbUPCX\/EFE6yn5SoVMX3R\/RQ6od6b4hT10LUctcBZ649RhHkwzxTFzIFfvbRS87OftOhebGXAP9JpN\/xt9IsaXOU4wp8ZiyQKIrClnepXtRaSC10WF\/ishsejgo3i7APXs7fWJiEMkoqRYwnbyPo=<\/pre>\n<\/div>\n<p>\u3002\u3002\u3002\u3002\u3002\u3002\u5947\u602a\u7684\u662f\u6bcf\u6b21\u5237\u65b0\u6253\u5370\u7684\u90fd\u4e0d\u4e00\u6837\u3002\u4f30\u8ba1\u90fd\u53ef\u4ee5\u7528\u7684\u3002<\/p>\n<p>3. \u3010\u540e\u7aef\u3011\u89e3\u5bc6\u524d\u7aef\u53d1\u9001\u8fc7\u6765\u7684\u5bc6\u6587<\/p>\n<p>\u89e3\u5bc6\u7684\u65b9\u6cd5\uff1a<\/p>\n<div class=\"linuxidc_code\">\n<pre>\/** \r\n * rsa\u89e3\u5bc6\r\n * @access public\r\n * @param \u5bc6\u6587\r\n * @return \u89e3\u5bc6\u540e\u7684\u5b57\u7b26\u4e32\r\n *\/\r\nfunction decrypt($data, $privkey) {   \r\n    if (openssl_private_decrypt(base64_decode($data), $decrypted, $privkey)){\r\n        $data = $decrypted;\r\n    }else { \r\n        $data = ''; \r\n    }\r\n    return $data;\r\n}<\/pre>\n<p><span id=\"MathJax-Element-1-Frame\" class=\"MathJax\" data-mathml=\"&lt;math xmlns=&quot;https:\/\/www.w3.org\/1998\/Math\/MathML&quot;&gt;&lt;mi&gt;p&lt;\/mi&gt;&lt;mi&gt;r&lt;\/mi&gt;&lt;mi&gt;i&lt;\/mi&gt;&lt;mi&gt;v&lt;\/mi&gt;&lt;mi&gt;e&lt;\/mi&gt;&lt;mi&gt;K&lt;\/mi&gt;&lt;mi&gt;e&lt;\/mi&gt;&lt;mi&gt;y&lt;\/mi&gt;&lt;mo&gt;=&lt;\/mo&gt;&lt;mi&gt;f&lt;\/mi&gt;&lt;mi&gt;i&lt;\/mi&gt;&lt;mi&gt;l&lt;\/mi&gt;&lt;msub&gt;&lt;mi&gt;e&lt;\/mi&gt;&lt;mi&gt;g&lt;\/mi&gt;&lt;\/msub&gt;&lt;mi&gt;e&lt;\/mi&gt;&lt;msub&gt;&lt;mi&gt;t&lt;\/mi&gt;&lt;mi&gt;c&lt;\/mi&gt;&lt;\/msub&gt;&lt;mi&gt;o&lt;\/mi&gt;&lt;mi&gt;n&lt;\/mi&gt;&lt;mi&gt;t&lt;\/mi&gt;&lt;mi&gt;e&lt;\/mi&gt;&lt;mi&gt;n&lt;\/mi&gt;&lt;mi&gt;t&lt;\/mi&gt;&lt;mi&gt;s&lt;\/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;\/mo&gt;&lt;mo&gt;&amp;quot;&lt;\/mo&gt;&lt;mi&gt;p&lt;\/mi&gt;&lt;mi&gt;r&lt;\/mi&gt;&lt;mi&gt;i&lt;\/mi&gt;&lt;mo&gt;.&lt;\/mo&gt;&lt;mi&gt;t&lt;\/mi&gt;&lt;mi&gt;x&lt;\/mi&gt;&lt;mi&gt;t&lt;\/mi&gt;&lt;mo&gt;&amp;quot;&lt;\/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;\/mo&gt;&lt;mo&gt;;&lt;\/mo&gt;&lt;\/math&gt;\"><span id=\"MathJax-Span-1\" class=\"math\"><span id=\"MathJax-Span-2\" class=\"mrow\"><span id=\"MathJax-Span-3\" class=\"mi\">p<\/span><span id=\"MathJax-Span-4\" class=\"mi\">r<\/span><span id=\"MathJax-Span-5\" class=\"mi\">i<\/span><span id=\"MathJax-Span-6\" class=\"mi\">v<\/span><span id=\"MathJax-Span-7\" class=\"mi\">e<\/span><span id=\"MathJax-Span-8\" class=\"mi\">K<\/span><span id=\"MathJax-Span-9\" class=\"mi\">e<\/span><span id=\"MathJax-Span-10\" class=\"mi\">y<\/span><span id=\"MathJax-Span-11\" class=\"mo\">=<\/span><span id=\"MathJax-Span-12\" class=\"mi\">f<\/span><span id=\"MathJax-Span-13\" class=\"mi\">i<\/span><span id=\"MathJax-Span-14\" class=\"mi\">l<\/span><span id=\"MathJax-Span-15\" class=\"msubsup\"><span id=\"MathJax-Span-16\" class=\"mi\">e<\/span>\u00a0<span id=\"MathJax-Span-17\" class=\"mi\">g<\/span>\u00a0<\/span><span id=\"MathJax-Span-18\" class=\"mi\">e<\/span><span id=\"MathJax-Span-19\" class=\"msubsup\"><span id=\"MathJax-Span-20\" class=\"mi\">t<\/span>\u00a0<span id=\"MathJax-Span-21\" class=\"mi\">c<\/span>\u00a0<\/span><span id=\"MathJax-Span-22\" class=\"mi\">o<\/span><span id=\"MathJax-Span-23\" class=\"mi\">n<\/span><span id=\"MathJax-Span-24\" class=\"mi\">t<\/span><span id=\"MathJax-Span-25\" class=\"mi\">e<\/span><span id=\"MathJax-Span-26\" class=\"mi\">n<\/span><span id=\"MathJax-Span-27\" class=\"mi\">t<\/span><span id=\"MathJax-Span-28\" class=\"mi\">s<\/span><span id=\"MathJax-Span-29\" class=\"mo\">(<\/span><span id=\"MathJax-Span-30\" class=\"mo\">&#8220;<\/span><span id=\"MathJax-Span-31\" class=\"mi\">p<\/span><span id=\"MathJax-Span-32\" class=\"mi\">r<\/span><span id=\"MathJax-Span-33\" class=\"mi\">i<\/span><span id=\"MathJax-Span-34\" class=\"mo\">.<\/span><span id=\"MathJax-Span-35\" class=\"mi\">t<\/span><span id=\"MathJax-Span-36\" class=\"mi\">x<\/span><span id=\"MathJax-Span-37\" class=\"mi\">t<\/span><span id=\"MathJax-Span-38\" class=\"mo\">&#8220;<\/span><span id=\"MathJax-Span-39\" class=\"mo\">)<\/span><span id=\"MathJax-Span-40\" class=\"mo\">;<\/span><\/span>\u00a0<\/span><span class=\"MJX_Assistive_MathML\"> priveKey=filegetcontents(&#8220;pri.txt&#8221;);<\/span><\/span> data = &#8220;SonHPbJpQBwygjZ5ZMtybfLEylnNCsd3poBsNxSt3QkUSDe+Pf7lf4JJIot9Ybd7mAXiOUgGZR7VctCSJhzzZQWNZp1or6h6dsYoFHE\/dbDHIxJGcXMNfv5BqrfAMGqkQVvyrED3NHcrgXokataRJOrsU7yvKpQKW6e3j+zcZD8=&#8221;;<br \/>\necho decrypt(<span id=\"MathJax-Element-2-Frame\" class=\"MathJax\" data-mathml=\"&lt;math xmlns=&quot;https:\/\/www.w3.org\/1998\/Math\/MathML&quot;&gt;&lt;mi&gt;d&lt;\/mi&gt;&lt;mi&gt;a&lt;\/mi&gt;&lt;mi&gt;t&lt;\/mi&gt;&lt;mi&gt;a&lt;\/mi&gt;&lt;mo&gt;,&lt;\/mo&gt;&lt;\/math&gt;\"><span id=\"MathJax-Span-41\" class=\"math\"><span id=\"MathJax-Span-42\" class=\"mrow\"><span id=\"MathJax-Span-43\" class=\"mi\">d<\/span><span id=\"MathJax-Span-44\" class=\"mi\">a<\/span><span id=\"MathJax-Span-45\" class=\"mi\">t<\/span><span id=\"MathJax-Span-46\" class=\"mi\">a<\/span><span id=\"MathJax-Span-47\" class=\"mo\">,<\/span><\/span>\u00a0<\/span><span class=\"MJX_Assistive_MathML\">data,<\/span><\/span> priveKey);<br \/>\necho &#8220;\\n&#8221;;<\/p>\n<\/div>\n<p>\u6700\u540e\u662f\u89e3\u5bc6\u51fa&#8221;123456&#8243;<\/p>\n<div class=\"linuxidc_code\">\n<pre>[xxx@xxx makedemo]$ php rsa.php \r\n123456<\/pre>\n<\/div>\n<p>\u8bd5\u4e86\u4e00\u4e0b\u53e6\u5916\u4e24\u4e2a\u5bc6\u6587\uff0c\u975e\u5e38\u68d2\uff0c\u53d1\u73b0\u4e5f\u662f\u53ef\u4ee5\u89e3\u51fa&#8221;123456&#8243;\u3002<\/p>\n<p>\u6700\u540e\u7ed9\u4e00\u4e2a\u5b8c\u6574\u7684demo\uff0c\u6d41\u7a0b\u5982\u4e0b\uff1a<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.linuxidc.com\/upload\/2018_02\/180211175072091.jpg\" alt=\"\" width=\"706\" vspace=\"5\" \/><\/p>\n<p>\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n<p>1.submitPassword.html<\/p>\n<div class=\"linuxidc_code\">\n<pre>&lt;!DOCTYPE html&gt;\r\n&lt;html lang=\"en\"&gt;\r\n&lt;head&gt;\r\n    &lt;meta charset=\"UTF-8\"&gt;\r\n    &lt;title&gt;JS-&gt;jsencrypt.js RSA\u52a0\u89e3\u5bc6\u5b9e\u73b0&lt;\/title&gt;\r\n    &lt;script type=\"text\/javascript\" src=\"jsencrypt.js\"&gt;&lt;\/script&gt;\r\n    &lt;script type=\"text\/javascript\" src=\"https:\/\/libs.baidu.com\/jquery\/1.9.1\/jquery.min.js\"&gt;&lt;\/script&gt;\r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n&lt;script type=\"text\/javascript\"&gt;\r\nvar PassWord = \"123456\";\r\nfunction myEncrypt(pass) {\r\n    var crypt = new JSEncrypt();\r\n    var publickey = \"\";\r\n    crypt.setPublicKey(publickey);\r\n    return crypt.encrypt(pass); \r\n}\r\nvar promise = $.ajax({\r\n    url: \"getPublicKey.php\",\r\n    method: \"POST\",\r\n    dataType: \"json\",\r\n    data: {}\r\n});\r\npromise.done(function(data){\r\n    if(data.code  === 0) {\r\n        var passWord = myEncrypt(PassWord); \r\n        var passPromise = $.ajax({\r\n            url: \"recievePassword.php\",\r\n            method: \"POST\",\r\n            dataType: \"json\",\r\n            data: {\"password\": passWord}\r\n        });\r\n        passPromise.done(function(data){\r\n            if(data.code === 0) {\r\n                console.log(\"submit success.\");\r\n            }else{\r\n                console.log(\"submit failed.\");\r\n            }\r\n        });\r\n        passPromise.fail(function(err){\r\n            console.log(err);\r\n        });\r\n    }else {\r\n        console.log(\"submit failed.\");\r\n    }\r\n});\r\npromise.fail(function(err){\r\n    console.log(err);\r\n});\r\n\r\n&lt;\/script&gt;<\/pre>\n<\/div>\n<p>2.getPublicKey.php<\/p>\n<div class=\"linuxidc_code\">\n<pre>function generatePubPri() {\r\n    $config = array(\"config\" =&gt; '\/home\/users\/zhutianpeng\/.jumbo\/etc\/ssl\/openssl.cnf');    \r\n    $res = openssl_pkey_new($config);    \r\n    openssl_pkey_export($res,$pri, null, $config);    \r\n    $d= openssl_pkey_get_details($res);    \r\n    $pub = $d['key'];    \r\n\r\n    $pubFd = fopen(\"pub.txt\", \"w\");\r\n    fwrite($pubFd, $pub);\r\n    fclose($pubFd);\r\n\r\n    $priFd = fopen(\"pri.txt\", \"w\");\r\n    fwrite($priFd, $pri);\r\n    fclose($priFd);\r\n\r\n    return $pub;\r\n}\r\n\r\n$publicKey = generatePubPri();\r\n$data = array(\"code\" =&gt; 0,\r\n    \"msg\" =&gt; \"success\", \r\n    \"data\" =&gt; array(\"pubkey\" =&gt; $publicKey));\r\necho json_encode($data);<\/pre>\n<\/div>\n<p>3.recievePassword.php<\/p>\n<div class=\"linuxidc_code\">\n<pre>$passWord = $_POST['password'];\r\n$ret = array();\r\nif(!empty($passWord)) {\r\n    $ret['code'] = 0;\r\n    $ret['msg'] = \"success\";\r\n}else {\r\n    $ret['code'] = 1;\r\n    $ret['msg'] = \"not recieved a password\";\r\n}\r\necho json_encode($ret);<\/pre>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u76ee\u524d\u4e00\u822c\u5e10\u53f7\u7cfb\u7edf\uff0c\u90fd\u662fhttps\u6765\u4f20\u8f93\u8d26\u6237\u6027\u606f\uff0c\u7533\u8bf7\u4e00\u4e2ahttps\u8bc1\u4e66\u4e5f\u4e0d\u8d35\u3002\u4f46\u662f\u7f51\u7ad9\u7684\u5176\u5b83\u529f\u80fd\u5e76\u4e0d\u9700\u8981\u8d70ht &#8230; <a title=\"RSA\u975e\u5bf9\u79f0\u7b97\u6cd5\u5b9e\u73b0HTTP\u5bc6\u7801\u52a0\u5bc6\u4f20\u8f93\" class=\"read-more\" href=\"https:\/\/cn.hostease.com\/xueyuan\/jishu\/fuwuqi\/rsa%e9%9d%9e%e5%af%b9%e7%a7%b0%e7%ae%97%e6%b3%95%e5%ae%9e%e7%8e%b0http%e5%af%86%e7%a0%81%e5%8a%a0%e5%af%86%e4%bc%a0%e8%be%93\/\" aria-label=\"\u9605\u8bfb RSA\u975e\u5bf9\u79f0\u7b97\u6cd5\u5b9e\u73b0HTTP\u5bc6\u7801\u52a0\u5bc6\u4f20\u8f93\">\u9605\u8bfb\u66f4\u591a<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[9],"tags":[],"class_list":["post-3207","post","type-post","status-publish","format-standard","hentry","category-fuwuqi"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/posts\/3207","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/comments?post=3207"}],"version-history":[{"count":2,"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/posts\/3207\/revisions"}],"predecessor-version":[{"id":3209,"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/posts\/3207\/revisions\/3209"}],"wp:attachment":[{"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/media?parent=3207"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/categories?post=3207"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/tags?post=3207"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}