_includes/encrypted.html in no-style-please2-0.5.0 vs _includes/encrypted.html in no-style-please2-0.5.1

- old
+ new

@@ -1,61 +1,126 @@ <div id="encrypted"> -<h3> 内容已经加密</h3> -<input style="width:100%; " type="password" id="passwordinput" placeholder="输入密码"></input> -<p> -<input type="button" value="解密" id="DecryptBtn"/> -</div> -<div id="decrypted"> -</div> -<script src="//cdn.jsdelivr.net/gh/vitock/jsdelivr@0.1.1/js/salsa20.min.js"></script> -<script src="//cdn.jsdelivr.net/gh/vitock/jsdelivr@0.1.1/js/base64.js"></script> -<script src="//cdn.jsdelivr.net/gh/vitock/jsdelivr@0.1.1/js/md5.js"></script> -<script> - var encryptedContent = '{{ content | contentEncrypt:page}}' - - function hexToUint8Arr(hexString){ - return new Uint8Array(hexString.match(/.{1,2}/g).map(byte => parseInt(byte, 16))); - } - function decrypt (key0){ - // const key = Uint8Array([...]); // 32 bytes key - var key = new TextEncoder("utf-8").encode(md5(key0)); + {% if site.theme_config.encrypt_title %} + <h3> {{ site.theme_config.encrypt_title }} </h3> + {% else %} + <h3>Content is Encrypted</h3> + {% endif %} + <input style="width:100%; " type="password" id="passwordinput" placeholder="输入密码"></input> + <p> + {% if site.theme_config.decrypt_btn %} + <input type="button" value= "{{ site.theme_config.decrypt_btn }}" id="DecryptBtn"/> + {% else %} + <input type="button" value= "Decrypt" id="DecryptBtn"/> + {% endif %} + + </div> + + <div id="decrypted" style = "display:none"> + <p> + <div> + {% if site.theme_config.encrypt_btn %} + <input type="button" value= "{{ site.theme_config.encrypt_btn }}" id="EncryptBtn"/> + {% else %} + <input type="button" value= "Encrypt" id="EncryptBtn"/> + {% endif %} + </div> + <div id = 'decryptContent'> + </div> + </div> + <script src="//cdn.jsdelivr.net/gh/vitock/jsdelivr@0.1.1/js/salsa20.min.js"></script> + <script src="//cdn.jsdelivr.net/gh/vitock/jsdelivr@0.1.1/js/base64.js"></script> + <script src="//cdn.jsdelivr.net/gh/vitock/jsdelivr@0.1.1/js/md5.js"></script> + <script> + !function(){ + var encryptedContent = '{{ content | contentEncrypt:page}}' + + function hexToUint8Arr(hexString){ + return new Uint8Array(hexString.match(/.{1,2}/g).map(byte => parseInt(byte, 16))); + } + function decrypt (key0){ + // const key = Uint8Array([...]); // 32 bytes key + var key = new TextEncoder("utf-8").encode(md5(key0)); + + /// hex + var nonceStr = encryptedContent.substring(0,16) + var nonce = hexToUint8Arr(nonceStr) + + const msg = encryptedContent.substring(17) + const message = Base64.toUint8Array(msg) + // Encrypt // + const decrypt = new JSSalsa20(key, nonce).decrypt(message); + var plain = new TextDecoder("utf-8").decode(decrypt) + var check = md5(plain) + if(check.indexOf(nonceStr) == 0){ + setKey(key0) + /// hide input + document.getElementById("encrypted").style.display = 'none' + // / show decrypted + + document.getElementById("decrypted").style.display = 'block' + document.getElementById("decryptContent").innerHTML = plain + + setTimeout(function(){ + var loadevent = document.createEvent("Event") + loadevent.initEvent("load", true, true) + + var DOMContentLoaded_event = document.createEvent("Event") + DOMContentLoaded_event.initEvent("DOMContentLoaded", true, true) + + window.dispatchEvent(loadevent) + window.dispatchEvent(DOMContentLoaded_event) + console.log('333a334a') + + }, 500); + + }else{ + alert("wrong password.") + } + } - /// hex - var nonceStr = encryptedContent.substring(0,16) - var nonce = hexToUint8Arr(nonceStr) - - const msg = encryptedContent.substring(17) - const message = Base64.toUint8Array(msg) - // Encrypt // - const decrypt = new JSSalsa20(key, nonce).decrypt(message); - var plain = new TextDecoder("utf-8").decode(decrypt) - var check = md5(plain) - if(check.indexOf(nonceStr) == 0){ + document.getElementById("DecryptBtn").onclick = function(){ + var key = document.getElementById("passwordinput").value + decrypt(key); + } + + document.getElementById("EncryptBtn").onclick = function(){ /// hide input - document.getElementById("encrypted").style.display = 'none' + document.getElementById("encrypted").style.display = 'block' // / show decrypted - document.getElementById("decrypted").innerHTML = plain - - setTimeout(function(){ - var loadevent = document.createEvent("Event") - loadevent.initEvent("load", true, true) - - var DOMContentLoaded_event = document.createEvent("Event") - DOMContentLoaded_event.initEvent("DOMContentLoaded", true, true) - - window.dispatchEvent(loadevent) - window.dispatchEvent(DOMContentLoaded_event) - console.log('333a334a') - - }, 500); - - }else{ - alert("wrong password.") - } - } + document.getElementById("decrypted").style.display = "none" - document.getElementById("DecryptBtn").onclick = function(){ - var key = document.getElementById("passwordinput").value - decrypt(key); - } -</script> + clearKey() + } + + {% if site.theme_config.forbid_cache_password %} + function readKey(){ + } + function setKey(value){ + } + function clearKey() { + } + {% else %} + function readKey(){ + var key = md5(location.pathname) + return localStorage.getItem(key) + } + function setKey(value){ + var key = md5(location.pathname) + return localStorage.setItem(key,value) + } + function clearKey() { + var key = md5(location.pathname) + localStorage.removeItem(key) + } + var cachekey = readKey() + if(cachekey){ + decrypt(cachekey) + } + {% endif %} + + + + }() + + </script> + \ No newline at end of file