hugo-encryptor.html 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. {{/*
  2. ## Hugo Encrypt
  3. ### Params:
  4. - `password`:
  5. require param
  6. - Simple
  7. {{% hugo-encryptor "your password" %}}
  8. your content
  9. {{% /hugo-encryptor %}}
  10. */}}
  11. {{/* DEFAULTS */}}
  12. <hugo-encryptor>
  13. <p>以下内容被密码保护</p>
  14. <input id="hugo-encryptor-password" placeholder="请输入密码" />
  15. <input
  16. type="button"
  17. value="提交"
  18. onclick="hugoDecrypt(document.getElementById('hugo-encryptor-password').value)"
  19. />
  20. <cipher-text data-password="{{ .Get 0 }}" style="display:none;">
  21. <p id="verifyText" style="display:none;">
  22. The quick brown fox jumps over the lazy dog
  23. </p>
  24. {{ .Inner }}
  25. </cipher-text>
  26. <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.js"></script>
  27. <script>
  28. <!--
  29. let cipher = document.getElementsByTagName("cipher-text")[0];
  30. const hugoDecrypt = function(password) {
  31. try {
  32. let cipher_text = cipher.innerText;
  33. password = password.padEnd(16, "\0");
  34. let key = CryptoJS.enc.Utf8.parse(password);
  35. let decryptedData = CryptoJS.AES.decrypt(cipher_text, key, {
  36. iv: key,
  37. mode: CryptoJS.mode.CBC,
  38. padding: CryptoJS.pad.Pkcs7
  39. });
  40. let decryptedStr = decryptedData.toString(CryptoJS.enc.Utf8);
  41. if (
  42. decryptedStr.includes("The quick brown fox jumps over the lazy dog")
  43. ) {
  44. cipher.parentElement.outerHTML = decryptedStr;
  45. } else {
  46. alert("密码错误!");
  47. }
  48. document.getElementById("verifyText").outerHTML = "";
  49. } catch (error) {
  50. console.log(error);
  51. alert("密码错误!");
  52. }
  53. };
  54. -->
  55. </script>
  56. </hugo-encryptor>