Simply copy this code and save as html

I accept crypto asset donations at my wallet address: 0x4d990affE62dd8326B2957dA59Dc5a82149b352F

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>GodSnow Encryption and Decryption Tool - AES-256</title>

<style>

body {

font-family: Arial, sans-serif;

margin: 20px;

padding: 20px;

background-color: #f4f4f4;

}

label, input, button {

margin: 10px 0;

}

input[type="text"] {

width: 100%;

padding: 8px;

box-sizing: border-box;

}

h2 {

margin-top: 20px;

}

</style>

</head>

<body>

<h1>GodSnow Encryption and Decryption Tool - AES-256</h1>

<div>

<h2>Encryption</h2>

<label for="textToEncrypt">Text to encrypt:</label>

<input type="text" id="textToEncrypt" required><br>

<label for="encryptionKey">Encryption Key (must be at least 8 characters, case-sensitive, can include numbers):</label>

<input type="text" id="encryptionKey" required><br>

<button onclick="encryptText()">Encrypt</button>

<p>Encrypted Text:</p>

<div id="encryptedText"></div>

<button onclick="copyToClipboard('encryptedText')">Copy Encryption Result</button>

</div>

<div>

<h2>Decryption</h2>

<label for="textToDecrypt">Text to decrypt:</label>

<input type="text" id="textToDecrypt" required><br>

<label for="decryptionKey">Decryption Key:</label>

<input type="text" id="decryptionKey" required><br>

<button onclick="decryptText()">Decrypt</button>

<p>Decrypted Text:</p>

<div id="decryptedText"></div>

<button onclick="copyToClipboard('decryptedText')">Copy Decryption Result</button>

</div>

<div>

<br><br>Developer Notes<br><br>

<label for="notes">I don't store any data of your input, please use this html LOCAL(without internet) to prevent any attack, and keep your Encryption key save in your mind. I will never ask you about your encryption key. I made this html to secure my own private key and my own seed phrase, i hope this help you all to remembering your personal seed phrase. <br>Please use dummy text first to test encryption and decryption function works properly before encrypt or decrypt your seed phrase!<br>

<br>

If you want to support me you can donate any Crypto Tokens to my wallet : 0x4d990affE62dd8326B2957dA59Dc5a82149b352F Thank you!</label><br><br>

<label for="notes">i use this Script with AES-256-GCM Encryption to make this script running on your personal device, so all encryption data will only show to your front end only. As you can see even this is simple encryption but it will take hacker forever to crack your encrypted text. So please just remember your encryption key by self custody. You all can check this html code to make sure it safe to use!</label>

</div>

<script>

async function deriveKey(password) {

const encoder = new TextEncoder();

const salt = encoder.encode("static_salt");

const keyMaterial = await crypto.subtle.importKey(

"raw",

encoder.encode(password),

{ name: "PBKDF2" },

false,

["deriveKey"]

);

return await crypto.subtle.deriveKey(

{

name: "PBKDF2",

salt: salt,

iterations: 100000,

hash: "SHA-256"

},

keyMaterial,

{ name: "AES-GCM", length: 256 },

false,

["encrypt", "decrypt"]

);

}

async function encryptAES(plainText, password) {

const key = await deriveKey(password);

const encoder = new TextEncoder();

const iv = window.crypto.getRandomValues(new Uint8Array(12));

const encrypted = await crypto.subtle.encrypt(

{ name: "AES-GCM", iv: iv },

key,

encoder.encode(plainText)

);

return {

ciphertext: btoa(String.fromCharCode(...new Uint8Array(encrypted))),

iv: btoa(String.fromCharCode(...iv))

};

}

async function decryptAES(ciphertext, iv, password) {

const key = await deriveKey(password);

try {

const decrypted = await crypto.subtle.decrypt(

{ name: "AES-GCM", iv: Uint8Array.from(atob(iv), c => c.charCodeAt(0)) },

key,

Uint8Array.from(atob(ciphertext), c => c.charCodeAt(0))

);

return new TextDecoder().decode(decrypted);

} catch (error) {

return "Decryption failed! Invalid key or corrupted data.";

}

}

async function encryptText() {

const text = document.getElementById('textToEncrypt').value;

const key = document.getElementById('encryptionKey').value;

if (key.length < 8) {

alert("Encryption key must be at least 8 characters.");

return;

}

const encrypted = await encryptAES(text, key);

document.getElementById('encryptedText').innerText = `${encrypted.ciphertext}::${encrypted.iv}`;

}

async function decryptText() {

const input = document.getElementById('textToDecrypt').value;

const key = document.getElementById('decryptionKey').value;

if (key.length < 8) {

alert("Decryption key must be at least 8 characters.");

return;

}

const [ciphertext, iv] = input.split("::");

const decrypted = await decryptAES(ciphertext, iv, key);

document.getElementById('decryptedText').innerText = decrypted;

}

function copyToClipboard(elementId) {

const text = document.getElementById(elementId).innerText;

if (!text) {

alert("Nothing to copy!");

return;

}

navigator.clipboard.writeText(text).then(() => {

alert("Copied to clipboard!");

}).catch(err => {

console.error("Error copying to clipboard: ", err);

});

}

</script>

</body>

</html>