App.svelte (1048B)
1 <script> 2 let message; 3 let plaintext; 4 let encryptionKey; 5 let ciphertext; 6 function decrypt() { 7 message = ""; 8 let result = decryptBase64(ciphertext, encryptionKey) 9 if (result.error) { 10 message = result.error; 11 } else { 12 plaintext = result.output; 13 } 14 } 15 function encrypt() { 16 message = ""; 17 let result = encryptToBase64(plaintext, encryptionKey) 18 if (result.error) { 19 message = result.error; 20 } else { 21 ciphertext = result.output; 22 } 23 } 24 </script> 25 26 <main> 27 {#if message} 28 <span>{message}</span> 29 {/if} 30 <div> 31 <textarea bind:value="{plaintext}" placeholder="Plaintext"></textarea> 32 </div> 33 <div> 34 <button on:click="{encrypt}">Encrypt</button> 35 <input bind:value="{encryptionKey}" type="password"/> 36 <button on:click="{decrypt}">Decrypt</button> 37 </div> 38 <div> 39 <textarea bind:value="{ciphertext}" placeholder="Ciphertext"></textarea> 40 </div> 41 42 </main> 43 44 <style> 45 main { 46 text-align: center; 47 padding: 1em; 48 max-width: 240px; 49 margin: 0 auto; 50 } 51 52 @media (min-width: 640px) { 53 main { 54 max-width: none; 55 } 56 } 57 </style>