Explorar o código

feat(hugo-encryptor.html): Support partial content encryption

Support partial content encryption
Li4n0 %!s(int64=6) %!d(string=hai) anos
pai
achega
54182757c6
Modificáronse 1 ficheiros con 46 adicións e 33 borrados
  1. 46 33
      shortcodes/hugo-encryptor.html

+ 46 - 33
shortcodes/hugo-encryptor.html

@@ -13,37 +13,50 @@ your content
 */}}
 */}}
 {{/* DEFAULTS */}}
 {{/* DEFAULTS */}}
 
 
-<p>文章被密码保护</p>
-<input id="hugo-encryptor-password" placeholder="请输入密码" />
-<button
-  onclick="hugoDecrypt(document.getElementById('hugo-encryptor-password').value)"
->
-  提交
-</button>
-
-<div id="hugo-encryptor" data-password="{{ .Get 0 }}" style="display:none;">
-  <p style="display:none;">The quick brown fox jumps over the lazy dog</p>
-  {{ .Inner }}
-</div>
-<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.js"></script>
-<script>
+<hugo-encryptor>
+  <p>以下内容被密码保护</p>
+  <input id="hugo-encryptor-password" placeholder="请输入密码" />
+  <input
+    type="button"
+    value="提交"
+    onclick="hugoDecrypt(document.getElementById('hugo-encryptor-password').value)"
+  />
+  <cipher-text data-password="{{ .Get 0 }}" style="display:none;">
+    <p id="verifyText" style="display:none;">
+      The quick brown fox jumps over the lazy dog
+    </p>
+    {{ .Inner }}
+  </cipher-text>
+  <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.js"></script>
+  <script>
     <!--
     <!--
-  let encryptor = document.getElementById("hugo-encryptor");
-  const hugoDecrypt = function(password) {
-    let cipher_text = encryptor.innerText;
-    password = password.padEnd(16, "\0");
-    let key = CryptoJS.enc.Utf8.parse(password);
-    let decryptedData = CryptoJS.AES.decrypt(cipher_text, key, {
-      iv: key,
-      mode: CryptoJS.mode.CBC,
-      padding: CryptoJS.pad.Pkcs7
-    });
-    let decryptedStr = decryptedData.toString(CryptoJS.enc.Utf8);
-    if (decryptedStr.includes("The quick brown fox jumps over the lazy dog")) {
-      encryptor.parentElement.innerHTML = decryptedStr;
-    } else {
-      alert("密码错误!");
-    }
-  };
-  -->
-</script>
+      let cipher = document.getElementsByTagName("cipher-text")[0];
+      const hugoDecrypt = function(password) {
+        try {
+          let cipher_text = cipher.innerText;
+          password = password.padEnd(16, "\0");
+          let key = CryptoJS.enc.Utf8.parse(password);
+
+          let decryptedData = CryptoJS.AES.decrypt(cipher_text, key, {
+            iv: key,
+            mode: CryptoJS.mode.CBC,
+            padding: CryptoJS.pad.Pkcs7
+          });
+
+          let decryptedStr = decryptedData.toString(CryptoJS.enc.Utf8);
+          if (
+            decryptedStr.includes("The quick brown fox jumps over the lazy dog")
+          ) {
+            cipher.parentElement.outerHTML = decryptedStr;
+          } else {
+            alert("密码错误!");
+          }
+          document.getElementById("verifyText").outerHTML = "";
+        } catch (error) {
+          console.log(error);
+          alert("密码错误!");
+        }
+      };
+      -->
+  </script>
+</hugo-encryptor>