hugo-encryptor.html 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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. <p>文章被密码保护</p>
  13. <input id="hugo-encryptor-password" placeholder="请输入密码" />
  14. <button
  15. onclick="hugoDecrypt(document.getElementById('hugo-encryptor-password').value)"
  16. >
  17. 提交
  18. </button>
  19. <div id="hugo-encryptor" data-password="{{ .Get 0 }}" style="display:none;">
  20. <p style="display:none;">The quick brown fox jumps over the lazy dog</p>
  21. {{ .Inner }}
  22. </div>
  23. <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.js"></script>
  24. <script>
  25. <!--
  26. let encryptor = document.getElementById("hugo-encryptor");
  27. const hugoDecrypt = function(password) {
  28. let cipher_text = encryptor.innerText;
  29. password = password.padEnd(16, "\0");
  30. let key = CryptoJS.enc.Utf8.parse(password);
  31. let decryptedData = CryptoJS.AES.decrypt(cipher_text, key, {
  32. iv: key,
  33. mode: CryptoJS.mode.CBC,
  34. padding: CryptoJS.pad.Pkcs7
  35. });
  36. let decryptedStr = decryptedData.toString(CryptoJS.enc.Utf8);
  37. if (decryptedStr.includes("The quick brown fox jumps over the lazy dog")) {
  38. encryptor.parentElement.innerHTML = decryptedStr;
  39. } else {
  40. alert("密码错误!");
  41. }
  42. };
  43. -->
  44. </script>