{"id":30,"date":"2026-03-20T12:48:18","date_gmt":"2026-03-20T12:48:18","guid":{"rendered":"https:\/\/www.w3it.org\/mypgp\/?page_id=30"},"modified":"2026-06-05T14:36:35","modified_gmt":"2026-06-05T14:36:35","slug":"w3mypgp","status":"publish","type":"page","link":"https:\/\/www.w3it.org\/mypgp\/w3mypgp\/","title":{"rendered":"w3mypgp"},"content":{"rendered":"\n<div class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\"><div id=\"wrapw3mypq\">\r\n<div class=\"wrapw3mypq\">\r\n\r\n<div class=\"interface\">\r\n  <button class=\"w3-active\" id=\"cryptInterface\">Encrypt<\/button>\r\n  <button id=\"decryptInterface\">Decrypt<\/button>\r\n  <button id=\"generateInterface\">Get keys<\/button>\r\n<\/div>\r\n\r\n<div id=\"w3mypqCryptoExplain\" class=\"w3mypqExplain\">\r\n  <div>&#128274; ML-KEM + AES-GCM<\/div>\r\n  <div id=\"destroySessionHybrid\"><img decoding=\"async\" style=\"margin:0px;width:40px; height:40px;\" alt=\"Destroy session\" src=\"data:image\/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiNGRjJCMDAiIHN0cm9rZS13aWR0aD0iMi4yIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGQ9Ik0yMCA0djVoLTYiLz48cGF0aCBkPSJNMjAgOWE4IDggMCAwIDAgLTE1LjUgMiIvPjxwYXRoIGQ9Ik00IDIwdi01aDYiLz48cGF0aCBkPSJNNCAxNWE4IDggMCAwIDAgMTUuNSAtMiIvPjwvc3ZnPg==\"><\/div>\r\n<\/div>\r\n\r\n<div id=\"w3mypqWrapGenerateKeys\">\r\n<div><!-- START GENERATE KEYS ML-KEM HTML --><\/div>\r\n<div id=\"wrapGenCryptoMLKEMKeys\" class=\"wrapGenCryptoMLKEMKeys\">\r\n<div><button id=\"w3GenCryptoMLKEMKeys\" class=\"buttonC\">Generate keys<\/button>\r\n<dialog closedby=\"any\" id=\"w3GenCryptoMLKEMKeysDialog\">\r\n   <button class=\"modalKeyGenClose-x\" onclick=\"this.closest('dialog').close()\" aria-label=\"Close dialog\">&times;<\/button>\r\n  <div>Do you want to save your public ML-KEM and ML-DSA keys to your profile?<br>Existing keys will be replaced.<\/div>\r\n  <div class=\"w3GenCryptoMLKEMKeysInDialog\">\r\n    <div class=\"w3GenCryptoMLKEMbutt\">\r\n    <button onclick=\"w3mypqcloseDialog('donotsave')\" autofocus>Only download, do not save\/replace keys on profile<\/button>\r\n    <button onclick=\"w3mypqcloseDialog('save')\">Also save Public keys to my profile<\/button>\r\n    <\/div>\r\n  <\/div>\r\n<\/dialog>\r\n<\/div>\r\n<div>\r\n<button id=\"btnOpenCinciaKeys\" class=\"buttonC\" style=\"margin-top: 10px;\">Cincia keys vault<\/button>\r\n<\/div>\r\n<div id=\"cinciaKeysOverlay\" class=\"cinciaKeysOverlay\">\r\n\r\n<div class=\"cinciaKeysWrapper\">\r\n<!-- Top Layer Header Area for the Close Button -->\r\n<div class=\"cinciaKeysHeadClose\">\r\n<button id=\"btnCloseCinciaKeys\" class=\"btnCloseCinciaKeys\" style=\"\">&times;<\/button>\r\n<\/div>\r\n<div class=\"cinciaKeysContainer\">\r\n<!-- App Main Container - Responsive width matching the wrapper -->\r\n<!-- Tabs Header Navigation -->\r\n<div class=\"cinciaKeysTabsHeader\">\r\n<button id=\"overlay-btn-split\" class=\"overlay-btn-split\">Split<\/button>\r\n<button id=\"overlay-btn-rebuild\" class=\"overlay-btn-rebuild\">Rebuild<\/button>\r\n<\/div>\r\n<div id=\"overlay-dynamic-content\" class=\"overlay-dynamic-content\">\r\n<!-- Dynamic Workspace Content Area -->\r\n<!-- Content injected here -->\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<div id=\"save-mlkem-status\"><\/div>\r\n<\/div>\r\n<div id=\"wrapGenCryptoKeys\" class=\"wrapGenCryptoKeys\">\r\n\r\n          <div style=\"display:none;\" id=\"w3mypq_wrapKeysDownload\">\r\n           <div class=\"w3keysdown\"><a href=\"\" target=\"_blank\" id=\"w3downloadPub_MLKEMKey\" download=\"MLKEM_Public_Key.txt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ML-KEM Public key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/a>\r\n           <\/div>\r\n           <div class=\"w3keysdown\"><a href=\"\" target=\"_blank\" id=\"w3downloadPriv_MLKEMKey\" download=\"MLKEM_Private_Key.txt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ML-KEM Private key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/a>\r\n           <\/div>\r\n           <div class=\"w3keysdown\"><a href=\"\" target=\"_blank\" id=\"w3downloadPubPriv_MLKEMKeys\" download=\"MLKEM_Public_and_Private_Key.txt\">ML-KEM Public and Private key<\/a>\r\n           <\/div>\r\n           <hr>\r\n           <div class=\"w3keysdown\"><a href=\"\" target=\"_blank\" id=\"w3downloadPub_MLDSAKey\" download=\"MLDSA_Public_Key.txt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ML-DSA Public key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/a>\r\n           <\/div>\r\n           <div class=\"w3keysdown\"><a href=\"\" target=\"_blank\" id=\"w3downloadPriv_MLDSAKey\" download=\"MLDSA_Private_Key.txt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ML-DSA Private key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/a>\r\n           <\/div>\r\n           <div class=\"w3keysdown\"><a href=\"\" target=\"_blank\" id=\"w3downloadPubPriv_MLDSAKeys\" download=\"MLDSA_Public_and_Private_Key.txt\">ML-DSA Public and Private key<\/a>\r\n           <\/div>\r\n          <\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n<div class=\"cCenter\" id=\"w3loadKeys\">\r\n<div><span class=\"cText\">Load ML-KEM key(s)<\/span><\/div>\r\n<div><input class=\"buttonC\" type=\"file\" id=\"myPubPrivKeyTXT\" name=\"myPubPrivKeyTXT\" accept=\".txt, text\/plain, image\/png, image\/jpeg\"><\/div>\r\n<\/div>\r\n\r\n<div id=\"w3mypqWrapDecrypt\">\r\n\r\n<div id=\"wrapDecrypt\">\r\n\r\n<div class=\"wrapKeysUploadedInfo\">\r\n<div style=\"\" id=\"w3wrapPrivKeyInfo\">\r\n<details><summary id=\"privKeyState\">Private key not loaded<\/summary><div id=\"privKeyInfoMLKEM\"><\/div><\/details>\r\n<\/div>\r\n<div class=\"cCenter\">\r\n\t<div class=\"cText\">Load sender ML-DSA Public Key<\/div>\r\n\t<div class=\"cCenter\">and check the file's authenticity<\/div>\r\n<div><input class=\"buttonC\" type=\"file\" id=\"senderMldsaPubLoad\" name=\"senderMldsaPubLoad\" accept=\".txt, text\/plain, image\/png, image\/jpeg\"><\/div>\r\n<div><span class=\"mlkem-dsa-PUBNOTloaded\" id=\"pub-mlkem-dsa-state\">Sender Public ML-DSA sign key not loaded<\/span><\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n<div class=\"cCenter\">\r\n<div class=\"cText\">Decrypt file<\/div>\r\n<div id=\"select-display-wrapper\" class=\"select-display-wrapper\">\r\n<select id=\"hybrid-decrypted-display-mode\">\r\n<option value=\"drawer\" selected>Display in Drawer (On-RAM)<\/option>\r\n<option value=\"download\">Download Link Only<\/option>\r\n<\/select>\r\n<\/div>\r\n<input class=\"buttonC\" type=\"file\" id=\"mlkemCryptedFile\" name=\"myCryptedFile\">\r\n<\/div>\r\n<\/div>\r\n\r\n<div class=\"centerc decrypted\" id=\"w3_wrap_link-decrypt-form\"><\/div>\r\n<div class=\"centerc decrypted\">\r\n<div id=\"w3EncryptedLoaded\">\r\n<h2 class=\"h2EncryptedLoaded\">Encrypted File Loaded<\/h2>\r\n<div><div>The file is ready to be decrypted<\/div><div><b>load your ML-KEM Private key to proceed<\/b><\/div><\/div>\r\n<div><input type=\"file\" name=\"wpw3MLKEMPrivateKeyLoad\" id=\"wpw3MLKEMPrivateKeyLoad\" class=\"wpw3MLKEMPrivateKeyLoad\" accept=\".pem,.txt,.key,.priv\"><\/div>\r\n\r\n<div id=\"loaderReadyEncrypted\" style=\"display:none;\">\r\n<div class=\"loader\"><\/div>\r\n<\/div>\r\n\r\n\r\n<div>or <a href=\"\" target=\"_blank\" id=\"w3downloadFileEncryptedMsg\" style=\"font-weight:900;\" download=\"\">Download encrypted file<\/a><\/div>\r\n<!--<div>decrypt it using the standalone <a href=\"https:\/\/axew3.com\" target=\"_blank\">BPQ<\/a><\/div>-->\r\n<\/div>\r\n<\/div>\r\n<div class=\"cCenter\" id=\"hybridDecryptResults\" style=\"display:none;\">\r\n<div>the file was encrypted on<\/div>\r\n<div id=\"mlkemEncrypionDate\"><\/div>\r\n<div id=\"decrypted-verified\" class=\"decrypted-verified\"><\/div>\r\n<\/div>\r\n<\/div> <!-- #w3mypqWrapDecrypt END -->\r\n\r\n<!-- START DECRYPTED RESULTS -->\r\n<div id=\"w3-drawer\" class=\"w3mypq-drawer\">\r\n<div class=\"w3mypq-drawer-top\">\r\n <div><h2>Decrypted In-Memory Data<\/h2><\/div>\r\n <div><button onclick=\"toggleW3Menu()\" class=\"w3mypq-drawer-topClose\"><b>X<\/b><\/button><\/div>\r\n<\/div>\r\n\r\n <div><button class=\"w3mypq-trigger\" onclick=\"toggleW3Menu()\" title=\"Preview Decrypted\">\r\n  <svg viewBox=\"0 0 24 24\" width=\"50\" height=\"28\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n    <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"><\/path>\r\n    <circle cx=\"12\" cy=\"12\" r=\"3\"><\/circle>\r\n  <\/svg>\r\n<\/button>\r\n<\/div>\r\n\r\n   <div id=\"preview-wrapper\"><\/div>\r\n<!-- END <div id=\"w3-drawer\" -->\r\n<\/div>\r\n<!--\r\nSTART ENCRYPT HTML ML-KEM\r\n-->\r\n<div id=\"w3mypqWrapEncrypt\">\r\n<div id=\"wrapEncrypt\" class=\"wrapEncrypt\">\r\n<div class=\"wrap0-cryptDecryptControls\">\r\n<div class=\"wrapKeysUploadedInfo\">\r\n<div style=\"\" id=\"w3wrapPubKeyInfo\">\r\n<details>\r\n<summary id=\"pubKeyState\">Public key not loaded<\/summary>\r\n<div id=\"pubKeyInfoMLKEM\"><\/div>\r\n<\/details>\r\n<div class=\"cCenter\">\r\n<div><span class=\"cText\">Load ML-DSA Private key<\/span><\/div>\r\n<div>and sign the encrypted file<\/div>\r\n<div><input class=\"buttonC\" type=\"file\" id=\"senderMldsaPrivLoad\" name=\"senderMldsaPrivLoad\" accept=\".txt, text\/plain, image\/png, image\/jpeg\"><\/div>\r\n<div><span class=\"mlkem-dsa-NOTloaded\" id=\"priv-mlkem-dsa-state\">Private ML-DSA sign key not loaded<\/span><\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<div id=\"w3-search-wrapper\" style=\"\">\r\n<div class=\"cCenter\"><label id=\"w3-recipients-max\" class=\"cCenter\">Recipients:<\/label><input type=\"text\" id=\"w3-user-search\" placeholder=\"Type name or email...\" autocomplete=\"off\" style=\"width:90%; padding:8px;\"><\/div>\r\n<div id=\"w3-search-results\" style=\"\"><\/div>\r\n<div id=\"w3-selected-unames\" style=\"\"><\/div>\r\n<input type=\"hidden\" id=\"selected-recipients-ids\">\r\n<\/div>\r\n<\/div>\r\n<div class=\"wrap1-cryptDecryptControls\">\r\n<div class=\"cCenter\">\r\n<div class=\"cText\">Encrypt file(s)<\/div>\r\n<div><input class=\"buttonC\" type=\"file\" id=\"myFileToBeCryptedMLKEM\" name=\"myFileToBeCryptedMLKEM\" multiple><\/div>\r\n<div class=\"cText\">Encrypt folder(s)<\/div>\r\n<div><input class=\"buttonC\" type=\"file\" id=\"myFolderToBeCryptedMLKEM\" name=\"myFolderToBeCryptedMLKEM\" webkitdirectory><\/div>\r\n<div>\r\n<div id=\"w3LoaderEncFiles\" style=\"display:none\">\r\n<div class=\"loader\" id=\"loader2\"><\/div>\r\n<\/div>\r\n<\/div>\r\n<div class=\"w3mypqDownEncrypted\">\r\n<a href=\"\" class=\"keysdown likeButt\" target=\"_blank\" id=\"downFileEncMlkem\" style=\"display:none\" download=\"my_mlkem_Crypted_file.txt\">Download the Encrypted file<\/a>\r\n<\/div>\r\n<\/div>\r\n<div class=\"message-control\">\r\n<div>or type text<\/div>\r\n<textarea id=\"w3mlkemEncryptTxtInput\" name=\"message\" placeholder=\"...to be encrypted\"><\/textarea>\r\n<div>\r\n<input class=\"encrypt-button\" type=\"button\" value=\"Encrypt text\">\r\n<\/div>\r\n<\/div>\r\n<div class=\"ciphertext\">\r\n<div style=\"display:inline-block;padding-left:15px;\">\r\n<b id=\"waitEncryption\" class=\"cText\" style=\"display:none\">...please wait<\/b>\r\n<\/div>\r\n<div style=\"display:inline-block;padding-left:15px;\">\r\n<div class=\"loader\" id=\"loader\" style=\"display:none\"><\/div>\r\n<\/div>\r\n\r\n<div style=\"text-align:center\">\r\n<span class=\"ciphertextSizeExp\"><b>Encrypted data size:<\/b><\/span> <span class=\"ciphertext-value\"><\/span>\r\n<\/div>\r\n\r\n\r\n\r\n<a href=\"\" target=\"_blank\" id=\"w3downloadEncryptedMsg\" class=\"cText\" style=\"font-weight:900;display:none;\" download=\"w3mypq_encryptedMsg.txt\">Download encrypted file<\/a>\r\n\r\n<\/div>\r\n<\/div>\r\n<!--\r\nEND wrap1-cryptDecryptControls\r\n-->\r\n<\/div>\r\n<!--\r\nEND ENCRYPT HTML\r\nEND w3mypqWrapEncrypt\r\n-->\r\n<\/div>\r\n<div id=\"w3-overlay\" class=\"w3mypq-overlay\" onclick=\"toggleW3Menu()\"><\/div>\r\n\r\n    <\/div>\r\n<\/div>\r\n\r\n<noscript>\r\n    <div class=\"w3noscript-overlay\">\r\n      <div class=\"w3noscript-box\">\r\n        <h1>JAVASCRIPT REQUIRED<\/h1>\r\n        <h3>The w3mypq encryption tool <strong>cannot work<\/strong> without JavaScript.<\/h3>\r\n        <h3>Enable it in your browser settings to continue.<\/h3>\r\n      <\/div>\r\n    <\/div>\r\n<\/noscript>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<p class=\"wp-block-paragraph\"><\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"w3mypgp-00","meta":{"footnotes":""},"class_list":["post-30","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.w3it.org\/mypgp\/wp-json\/wp\/v2\/pages\/30","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.w3it.org\/mypgp\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.w3it.org\/mypgp\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.w3it.org\/mypgp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.w3it.org\/mypgp\/wp-json\/wp\/v2\/comments?post=30"}],"version-history":[{"count":4,"href":"https:\/\/www.w3it.org\/mypgp\/wp-json\/wp\/v2\/pages\/30\/revisions"}],"predecessor-version":[{"id":502,"href":"https:\/\/www.w3it.org\/mypgp\/wp-json\/wp\/v2\/pages\/30\/revisions\/502"}],"wp:attachment":[{"href":"https:\/\/www.w3it.org\/mypgp\/wp-json\/wp\/v2\/media?parent=30"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}