-----BEGIN PGP PUBLIC KEY BLOCK-----
xjMEZMbcmxYJKwYBBAHaRw8BAQdASWyB6+boN6UveufGe6sBSI4WI11Acwyc/An7
V3g+4kPNH01vcmdhbm4gPG1vcmdhbm5Aa2l0dHlmb3gubGluaz7CjwQTFggANxYh
BKnEyu7tnz+j2qqQQ3ncxePYDHPJBQJozmhmBQlqXUjgAhsDBAsJCAcFFQgJCgsF
FgIDAQAACgkQedzF49gMc8meWgD/cG7s/GVRDrU7VJoFmXscUmgRIyVpts8etDDO
b/MSUxEBAO2O1mrsfqq69Wfjl6+0SMbREAN/n4di/7KoxCl+h8EHzjgEZMbcmxIK
KwYBBAGXVQEFAQEHQAEy1EDciaETLL5LelnWq57tPDyTExGrbSTJ45HF3494AwEI
B8J+BBgWCAAmFiEEqcTK7u2fP6PaqpBDedzF49gMc8kFAmjOaGYFCWpdSOACGwwA
CgkQedzF49gMc8kAtgEA+VeK0xK9XF7uIZHswmZKxuwiJ8ppwvwxob7pm+GIBE0B
AITpZeN6kGCWPOSIIRxyEmpFFMPlsTHqD5gir0rAR8EM
=ioCv
-----END PGP PUBLIC KEY BLOCK-----
This page is pure HTML, CSS and JS, hosted by myself.
The encryption is done within the web browser, so this means it's as secure as your device and browser (main vulnerabilities could be malware, spying eyes above your shoulder, browser anti-functions like "AI assistants" spying on your usage,..). This page is served through a HTTPS connection with certificate signed by Let's Encrypt.
To do encryption, it uses a very neat library:
openpgpjs. The library is loaded with a Subresource Integrity (SRI) check, but additionally if you wanna check if it has been tampered by my webhost in any way, you can run a signature check using my PGP public key.
Feel free to dig into the source code: all you'd need to reuse the code is to replace my PGP public key by yours (I recommend using X25519 keypairs over RSA because elliptic curve crypto produces smaller and more robust ciphertext).
Dependency library for this tool:
Of course you can use my public key with another tool, like gpg:
0x79DCC5E3D80C73C9.