ふくらみ

膨張し続けている

はてなブログで記事にパスワードをかけて暗号化する

先日こういう記事を書きました。無駄に記事を暗号化してパスワードを入れないと見れないようにしてあります*1

fukurami.hatenablog.com

はてなブログにはブログ全体にパスワードをかける機能は用意されていますが、記事単位でパスワードをかける手段は用意されていません。
今回は、はてなブログ卑猥で変態的な記事を堂々と書きたい変質者予備軍の皆様向けに、こんな感じにパスワードをかけて暗号化された記事を簡単に作る方法を書いてみます。

とりあえずやり方

1.普通に記事を書きます。編集モードはなんでも良いです。
f:id:tfukumachi:20170208234148p:plain

2.記事の最後に次のコードを貼り付けます(見たままモードの人はHTML編集画面に移って下さい)。そのままコピペして下さい。

<p id="poge"><textarea></textarea><script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script>
<script>document.addEventListener("DOMContentLoaded",E=>{var d=$("div.entry-content").clone();d.find("a.keyword").before((i,e)=>e).remove();d.find("#poge").remove();
$("#poge>textarea").val(decodeURI("%3Cp%20id=%22moge%22%3E%3Cinput%20placeholder=%22input%20passphrase%22%3E%3Cbutton%3EDecrypt%3C/button%3E%3C/p%3E%3Cp%20id=%22plain%22%3E%3C/p%3E%3Cp%20id=%22encrypted%22%20style=%22word-wrap:break-word%22%3E"+CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(d.html()),prompt("input passphrase")||"").toString()+"%3C/p%3E%3Cp%3E%3Cscript%20src=%22https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js%22%3E%3C/script%3E%3Cscript%3Edocument.querySelector(%22#moge%3Ebutton%22).addEventListener(%22click%22,e=%3E$(%22#plain%22).html(CryptoJS.AES.decrypt($(%22#encrypted%22).hide().text(),$(%22#moge%3Einput%22).val()).toString(CryptoJS.enc.Utf8)));%3C/script%3E%3C/p%3E"))});
</script></p>

3.プレビュー画面に移ります。パスワードを入れろというダイアログが出るので、何か入れます。
f:id:tfukumachi:20170208215052p:plain

4.記事の最後にテキストエリアがあるので、その内容をコピーします。
f:id:tfukumachi:20170208234209p:plain

5.編集画面に戻り、書いたものをすべて消し、コピーしたものを貼り付けます。
f:id:tfukumachi:20170208234225p:plain
※後から記事内容を変えたい人はここでバックアップを忘れないこと

6.おわり

完成したものがこちらになります。

U2FsdGVkX18aTf/JBKTt+r6RNqxG/dp4vzemMM0ZRK7luX15bamC3Py0whiIO0//H9tr6XhcgyS9ymzmHfRHvzskHb+egdI63o4wUfx+sLzsgTqpZntXifolrAYRsSngo3h01Y2gQvfEyEpa4VcNARw2o023kxJ10tB9FbRAeNybJvVnE+oQjammPlyNrdpKpWvapn08orPQrOlkQx8kvHRxk9NFqWhsh5DbZRurEhCjgzTZ/kBVcBr4rOdhhiuONk565uUrIu98fqmvnXRkA5t0MGECbyUjDY/Gr4CszKfwYZH4Dbleb2N7m5DbUpTglzIGR/iSGlOAdS6BHemPBwYm04KBL2U4zdr1WR8UvdB+B899HHglSPFXAmnFrOmViX3u3AnLj/aKx/hFV1XhBfNWcRrtehYVJRUGgIXIYATwMtdM2AyvQ7bRvYB8KhCGU1SWLZiwjzDXLJ7uOhgnrVeBMaYG/4C/+d3/z8EEf6wxTC7MepYqI5FxEgCMgWVnN3C6YN50frBhMD4KbkbGhJYxAIFGuYRlrVxDBAv4zOYq8T502g3/OBxXWGWnY2mhC0v4ZS7zhcGcYCg4xBPmGW8pRPviyfSMQ9R1/cXeNNPUDnXYuurAh60y2DsGfnj3Uar+1uAMYjOTOraHjrnDwTq4R50m2YR7BEYjob7PzU3W14kDF4oiQN1CP5eyS6hhHKg5/neKR2bYSNCeC2MF4UuT2W4RqT4z1pzbGAUBUDqbYVdTmmfG3QnrWTeRffMf0U14bTGp17jcEwEL0CcD1EYg3hOCbN65Cs9l2yFyATw5zTlQt7BQLR94y3jPYu4rUwONAY5OXXWeZeOVlMvk7SfTY7JpF177d/shNMP4NywMQPwzTTDpTar78HOq/zIz2mRkfjKG8CAsf5bYcASTYI3U3+BscNdifcrcOQoRfWdSGpG18aT1prwe9vvqBUzMx4Rx6jTcBK9/HfO1ccYrgeutczI2BE1pq4svRdsdW0Vxr9Nqg4GW+HXCi3ceKkmgkWBAtR2AlZzYslBPry+oUwVaMTfBRRSebRRhCReT5/+PAU+QRjCqenu31tEIQh4Gm1IdbUvy8PoEH+5MX/FHsvc2Blw7QkpD8Nthvl03fKFKcmOVsRtVhA0TAOaMh+Pgime3ZdxcBgXZN4xpc3rkzi1kGPF8zSwmqr6Y+pPiJxV1SwaW8gDgQzPcUl6U5P6lZxgHxfKxCeeNE50Oc7R8CzQVDBxQO8nJbC2H2yw4wgynacTHFILZEMCmdl8Js/r2XDyVOOBWrOzgvIoGhsXaFPKMPZJTFs+G6gqE2CgtKNTZOEOu6Af+Ei/gFhr6ddMZJZhsYTLWH0rvbNlhhsqlsAkyfSx2NDObOGFVbnYrqJpp+t25HfI+fXo+rF3HTZ6j6rPPruDmSOtXWjKqAYDDejT4ybJb6WyyqjOPLfATRsPNI9IgYE/GUJ8IrEkEUe/ySV8l/24yntkwS7wGHmTxEqN4wm8TqdrGW7I+qsWEzGtoExX8H0197sWJsr1241CO+yESWyjQT1+edEn0FxlMJPSv4ANB5nPRvgE+HTnldnGMOIwTsmqoZdYXUU6yg4mciNQrSyfVQtkvgbGydm3AEshJhNwpmMM5MDiNPWFGP40MyuTWmci4ehGs7ERJiEZjxtk4z8auwwGN0EwTSkYIK6xVgIs28f5ctGNH1Z9kzraMz6BXr6PjXWbbJ3Bw3kS8OnWTjznj0cee2EM2U0vI8oZf2GyF17AGGOGH05bLfkL85VpS7QSrvmWnRWUq8DoCOXUEXGZbL4WV7k4L62RDCqL54YHruUvOZFyalnYi8/JdSCuWoSWTnXpj5rJsX7gHFmZON+BpCLVn0SqoLRlyqPagxqCJ5ZzEuEGmQieKeObKQM5iKz/usUHjfIML7IX+HLCpI8xbBXFiQ5tpV60NY5bi9/NRZxcUCysGdDxrfO8Of2zSPczWtdwxXgePc9YVdJebgzcIKmH2G9Z6IoXLoVdfQ8PYYSYCK/5T5lSa0jtyvPCNpVHY2G3E8f75eVUF/NHMP2h5lJhlOo8q17Adf63fDAPICLieCmP8vwD/UQeY8GdWMVw5WLUJCLfm9GxaiaTTe13bCvNqP8c3de6uWyGyhF0zm4XtKtn1ADSKwcB+Ko0ewUC7h32AsStCZR8YNE1Fmk/LDWi7um4gLwf0HsP0ovaC8ZbzmJy9bYLceb0fLfrovzRkLUFch3APz29HvRvafRK3DR46+kNO9q89FMEScEdAFtsO8CMijdHw7ps88JTIaIUrhsL8ORhKcc2v1ikL67r229VQusIaH99gJV9S3DXhT2oc1VkiExs+ID4UJzdenZm6X4AxZnOTaKQ/fGQPXnONtIZcPJBTl9bR99CJni00X/j8tR079IEcfpmb88a9mEPA/H9319qVWMiveMgG7bZkatmL63MH8eCYv8qkQEMLEe4YF0usJk+Nc1i/VQUXmKIEvKE1NqkJDUA4r+yl0/8W3yPDDWyLiNPayT6OkTBRH/gMNONq4ks2PhiBgzCFgvlcWKrnpV+iwqFDOpYLPw3l2E0Iy06Wij9k4G6JiCVzMrCyfMqokAYobKVqji6t98l57x3pkCA0b8SYxmoMGtalC/0ICpKFHEr11yUFCkZUj6tHpdV80Gh7Mtk/iTxQUceKj0lcKBo5EpPhFpmVn/rWww3PHPF7niR5GhLcgsiKbwgNQx21IMlxcU1esnB1ujF8HfWcPcR8QudAYrJOlOaUdYXq+YJMpylJzqOcSCNAkNi1zhybTv4E8pTVjCUqGLbrcCsKeBXjiXT6W9Fwcf7AyOhAbAhUWYvQMAn5a5nFSMDl63H9JTWVxMywR5lMYLG7XsMGLzU/6SHkD7+iQF40cySgL65EflOanI9yMCaJe68WwQbaj7h8d2HPt/9LgVyMWh1RRA5IYTLcX4ts/PAa1JcGwaeHqyn2A7VjcT1kJyF07DtEMmjfYpkDrXkKR3gf3tV+vGklMi6QEb44Ru8NEvWMLrYPm2FKEkgN5h1TR6/i6V6bZ+Cebm7TmkmU/0ZFkrTQ5R1rTEuj1N8bYddfYWmR7tBQluvKl/elLbhKiBY+x39adDsKqCRbyNAVFg0aXWVx4N/IxDNdqiPqyX0A+iPM9Ezy2ZbDO9H63zdGSdRUIaaF0mIHg0wi8ZQQ+ohhMqey9SHeR2jPOGLdub5glsCiycqrcsS/YzGtXkZOL2RWpPa/PSt5Ci10cnxzD1I7hU4XAB98K4LqPKjE1G1WZRVFCZ0OBq8Tb4w0rJ27IbcgPt7v5BaIlsj6DKBPawtfXsiWp1uidYTBwECVtW0BPNbuU5hn1T3wiAnGe8T7gUfA+QyP5bARPp3eUKGYwd+qnfWx1N1iTDsJGxe/xk1FGClKV/DzYwQ2AbnFrkwLmWc8zf7FrwqOXETWzT0MEByVu5HZaKNXGudoRbHDrIb9EbR8X9Iheee3I/kqOoDEVZi/GFUhGO7IFVm2hfDzNvAhyH8009hvEPmKd6C0XEEyOTPLyVg//xDaip3c1tCvO2e0YfO+YVEnU2F2kaUS4jJlqVE5HFDpH1CT16lZoB7BJtAsvlvJ1iJSI3e8hk7JNeXPNLx+oTx7yaXlQPXrvmt8gRnt+a3dJ8QPCfm0cF+OEJPUW39boTkFPGUWYzBEh0KEjvTGOelCzmrAdFz+aQxuVyvORoEYVAsh38xqRji5aSOJGAHNI/+WfVX2bP4j8Fo0+9qPJorz1GjYJoQuS1FFavptHua98CCWlpQrdZT15s66dgJADdmbUCvu99GQmV/o31pHCicRHgMRl/9hhy/pd+ClX5GhieYt+odZIq2irsk6iaroxMd5d1ce33u+mmz15wia0iV/y9Yq+x/0zb4NA3rjsjgvCpKaJriuLWuJFizSRrZcVfIv+sEA0BjzE8b/AV4sZIisyIGd7VM8DkcZwqFeaznQSX6P3jiJETOPbypMVWGl0mVn5+w/DtxRANeCPLdr/UT+GEY9zbVa38hDMfywGrFraAaqWcXhpAirFCSLe8MzpJoyNsW3wJKbCDrfYvJw/zcRM8WMt1ZoTcJQEV8gh+qp7xguHtgc+ZEMuX/R/V68cj/VORT5UTxpJbx43aB/i74r1WocxD8oJuXqX0Hor9NqYIenZ7obAEaPZkbpfeFSbzVJRai2zkXaB6j+T9sYZjNENmn4gRJkpllM2nGma/T2Y096Tvw8BvBcjM6Pae4DnIBQFPD/X3BLrBjQU6p+2TDuhR6Cwwp1nc7Yn62MWmegru+K/ojyDV+vgRXpZK7PjTt0O1IgUU+5PXGKwCbwKxH9/kwapfDx8tWQdz7Bjimw2HjRDzsNoGpV8kaAxneR9wbtIvPPLedHFn0Z9wSGOT/m+LMr+7DNN9ZY6X1LakWuTKtOke0oSTqYv4Urzu3NRLjHJx3jFJdS+Z77KzrvIXbyrxZOsYNgIUieEn3xMiHL4QVZwDrbUVvlSiDjqByNBBwWUXFYECRA3/mOU13uYwZ73iOGtorwzEmDEicNaPXy1pd2SoR9cMerkEDpiCCXQFZDcKXqf606nnYm4xoGEBudZxkUyi5BIZUjjtwpheIlqMD736tpohdwZDrFzmfENRRF2T2vRSJb4pfDnOfvw2ZMSGDfGTUXbLnrEAc4g1sTd1w3wcMrP4GSRjJZgoggI9k43MBY6qfok8tm933X3YLhrWwvPQwbEHY56xLBK+vGJKoAESuI2SZ1OP5WjvRJj6e6EYenHIRxBz/BUV9U94b+YfRL36N65o350xfjtmNUaL423KmswfskSVlSmBd5Z5i+4oPfQ758vKRGTdDyA+f06Zu/kFGNvTY8A+E0fYyER+GsMndKB5qBSeAOTucfztkkNHiuZr8909seBccPBo6HHOHpsgtkA5TMBPw7z3xRyQTQEaxL0OEU70/wbQjwcyl0pDKVK8NayCKe27EK3pO3+XpYbpqsa+Yb418WR8qDvljh5uO7z80lvznDv8k1g37dypZ8G3f6asQK0ozqfyUARz1+uEpiMKcTDdGaARv2EevKtW+pujjZA9anypj5lWVCmY3AaDYBTTuRRtJ7iVmty8M1IBFBzcuzO/xoQRAMd1+0o7VXiDQiWQDsC6h9RH+2hdGSoVVf/FHy6T9L6tJrGWUn93IBtlbEYF/uCj2mFUuS9Fk0E87Pct5ipH/W3mPKHKBAKURWegpqexKmQLDOWnAxya1VoP2T2iMsVhDVNGsWQeMd62IcyS6xurLXBuj63P/xGRBy8luFTBZ7Q3cd/cOdqRnAvJfTV9g7jhYk5N68NqElgdoLZv1IZptKPByHd8smx+gmxvUUlftqreQ/JDYB+tP7uwUL+TGXL1MlwW5XcBdo0hBnclDLbts9IVnrAT9jT3+ztBbqpPO+vQXrv2JL5Gc2pkj14wvJonx/aQ/aXUVbqdgnQIAhfYQ/9MZRp1mIiBRfh0eBNWues3AMwt1oO5mxgzz4LSdR5n2f3Ya5GeZJwaHWDFBrT7iVYIRFXZIHJxsfhd8kJjgcMOSjlrPyD1uY20/nqPaBTfYrk47j3zcaNEBxFpBANnhVwmjmqSbbmJnA/1Fs4xDDt1rAGdjTVHwiygo/pS2a8TiPhGYbSLiAApFMxTo/ICZjtXTLRaN/RiwCd82ATwgUjVoTuinQsTczpKDqENVowujzi3yg57tk9OY3wNMWldrMrr4o9f1zJe7C/s3MnVeUkehguTYWAmDQVQXqF5XoiYFwoQbralmDbExo+EnVwYde2g45PWagPAwm+4xAb5FPm69BrO2qMPnROPdgjqA/ftlbpqs6xQJwxGBW8ETVw3mm+2KwCZg7sgAbHiRjmy27iW+xy/Zo/bhd3KVBjU6FLc7qtihCL/j7IBGmv+bW6NfPz89yQcZPg9nshRFAiXdYf8j6g+gFpMZC+b99jB56Je91wCgbmPv8ZHfrZtM/eg6ifqHQPmD3ECWX01qzx3rpsrGRzQ3I9ZbmWrzaqg74YGnfXGkdwUa0NveI4f9TGun0VwUn6yiRROdvAhrpzdQ/NbjSlzfAunSYZg6n+BjireGgfKLdSgWyRdfcHkN7QyUFMLIVogQ9bww7cjBb8aB7u6PxWxyEih/OnVKw9eWvBAobzal6SbODDWTwC3vx21EXgy15MU0jTiYkLAbRn0CpvXoOaxnm7lNigafkSu1Ypkpwl8fNmhF4iCzhm8EOwMweoJcVEJZZdvMrLu4uIOtb+Jq+c8rhXaMVeNuVUwFB0sWjSNdeczin3GE2evEROA0zD2ATOCddtAjZBRLghAtxwu7/ulVyPAIj41cFVhNrvfSRXOfx2RH4p/tPh8ClnQ93R+fElj1ZPNS6VtStbxxq5cKm09LEr24gW1GFG8CdU8oCkHS5YYP8k991n7X9oWzEUbmcNCiZ9zQM7FB4O7LGs04svdgLrcpSBd/nnAW0ki+QE3cmfKqj8ayJv0Gj8NsKMRfgMhkDwFDvg4sPXxDdmnkCll9uthUmQyVuVBexcp1oKu41kwNEruvqQDRyaZ87CpbPfgVnTgEQW0qR484y4qXscbfgPn7pcbAxAS04DjfVu+7/BJBPZS9jvwrLB9p0OapXuew+fG5Uo10YZOtunvazxMN2B6mfaRpZe+m1wGCaFU7J+S85D4QZUYKHaV29qTOJPmUaowIlqgMB410MOZIbEIeuPsBq/KVbed5ctLdQtoWrzju106zY2Opn8vhLbMCy+h6t3yP769r66jHeT8oATMXmlbaLcfe9NEgtC9DJmgfjYUq9nTuONjAf+5y75BWDFcFatj02Einvl+etx0VWSVEznkAp2m3bnmFvtFJdx575yMxTb/V91xjCoJBx9pX6cCXHYVo8qIcbNGt6DrTQAySvghQNhzRV2WWcMETLW36WMw8mLgCgLR6ggSzj3iKB0a18nr2LOOkXmwG4o9emEpiAoDrDN0SvwwhLMAWBolvSGFUr1i+2y3wasu60+k3hXyeIhYxNB8PULfW6fn8ZimwQPfOpIcSmCGn6uQldTQeWs+RCF6o2I3MpN+rbWHNHVZWfktOtzkKY1A6FiQogYg8HyJoSXQtcrLSOGACA/TSWOzuFkW24BC4J/BROAvdkq4EuK3jqvv78a1Emlc7HU74q/Yz6kexUBXRF5RqxrHRRicNrJj1bM4fHuFOH1h2jRs5r/5x+YhqNXw7XeJubZ6rKHXFlqjT8iEbuVQ9pwPoqiYZVneGZVEfdcVzi2jQ2tvurRNKl7JIKmiYY1T659n2bP/wk2v/zUXV664+1HtbsGmOUUB5fiREBeLJH8EiG7uh9s6mkg7iMwK/OaiMMMZFDbZDw86blMPrLErnrV97no4fo+GB4coJNI0VDI/AKs6S1A28ZsudvSkxta9fe38GflWPXVF0Fl3JfPIKEogqKfP1eboi/4ut95ba4ahKDKOPSh3TthKdpvWwHMZwKzMy2DYIKaKJkmo8mcT9IooRslmotcEqXe0+p5h8AUPT4a1sI1BTtHCvejBwvpjMRTO0BrSQaKMHasSis83OIADlIyprRM2YEfSnoCu2g9gZ8pjEzP5EJuDlnKgbD79o6iqXyEJ4hFlFUK1u/gq6f3vV0dEmKFODCqyQBDWbGBSvWMCyja5CwdJuZOf8q/zi1/kkharBG4aTZRKNWvW7zRoUjxmyN7lEFqLPBC0ljqf0EGQh3oeiwyo0IR/Ey4VUksp5Fre+U25QOmbWo2+Vk+St3RcMIRtJnbVIEDNBU03gA8LhFQ3pap0LUlID1s6G1WGbwcLeCf55DTmdqg2QoPRwest1uyBLU8yX7WPNybfthzGbfeFL9qtSBpIsi1U12pZhYJQ7EF3nFhWdZbAfFsjp0yjwiUNwJb+tlIJLJYlSp9SLX2P4HTqZrtUJexs1WNg4t2yrKt1/IBS7ec2Twssf2Fnj2tkmcM4yiWVJUeGb02zCeJPkplb/1kL0vO03kniaZ442NH+n4lNKhIIiF+jz4jWViMBgwSqLZwF2tECGBADe+h7fZqhRYy4C1oU/i0wM6G8S+NZiqYMVwSeNCQ3Xhup8CjjVo3f5JWTJMvprbBXrhM0HqMB6+dJ4MZ6s9exTw2EibduJWqSjPmkCNx2R4MEf9KJ2yPKihe+gdC9+9ii6StN/A6r6Odjiqd44Re6o=

何をしているのか

大したことはしていません。やっていることは、

  1. プレビュー画面の記事のHTMLを取得する
  2. はてなキーワード等不要なものを削除して抽出する
  3. CryptoJSというjavascriptライブラリを使ってAESで暗号化する
  4. 暗号文と復号用のHTMLをまとめて吐き出す

だけです。AESはアメリカで標準化された共通鍵暗号で、十分な桁の鍵*2を用意すれば文字通り一生の間破られないことになっています。

はてなブログのプレビュー画面で記事の中に書いたjavascriptが実行可能であるという仕様を悪用して実現しました。
はてなブログが要らんお節介をするのでわざわざエスケープかますなどしています。

はてなブログ専用のようなことを書いていますが、これは中でjQueryを使っているためです。実ははてなブログにはデフォルトでjQueryが読み込まれているので、それを利用しています*3。他のブログサービスで使いたいド変態の方はjQuerycdnから読み込む感じのコードを付け足すなりすれば良いんじゃないかと思います。

変質者予備軍以外にもテロリスト予備軍とかエセ左翼暴力集団予備軍の皆様にもおすすめな気はしますが絶対に悪用しちゃだめだぞ!!!!

*1:見なくていいです

*2:規格上256bitが最大の鍵長なので、32バイトの文字列を用意するとよい

*3:但し、ページの最後で読み込まれているので、記事中に書いた<script>からは直接使えない。DOMContentLoadedイベント等の発火を待つのが良い。