| layout | title | nav_order | permalink | aliases | |
|---|---|---|---|---|---|
default |
Demo |
3 |
/demo/ |
|
{: .fs-9 }
Interactive RSA encryption demo running entirely in your browser. {: .fs-6 .fw-300 }
Key Size:
512 bit
1024 bit
2048 bit
4096 bit
Generate New Keys
Generate New Keys
Asynchronous generation
Private Key
<textarea id="privkey" rows="15" style="width: 100%; padding: 8px; border: 1px solid #d0d7de; border-radius: 6px; font-family: ui-monospace, SFMono-Regular, 'SF Mono', Consolas, 'Liberation Mono', Menlo, monospace; font-size: 12px; background-color: #f6f8fa;"></textarea>
Public Key
<textarea id="pubkey" rows="15" readonly style="width: 100%; padding: 8px; border: 1px solid #d0d7de; border-radius: 6px; font-family: ui-monospace, SFMono-Regular, 'SF Mono', Consolas, 'Liberation Mono', Menlo, monospace; font-size: 12px; background-color: #f6f8fa;"></textarea>
Text to encrypt:
<textarea id="input" name="input" rows="4" style="width: 100%; padding: 8px; border: 1px solid #d0d7de; border-radius: 6px; font-family: system-ui;">This is a test!</textarea>
Encrypt / Decrypt
Encrypted:
<textarea id="crypted" name="crypted" rows="4" style="width: 100%; padding: 8px; border: 1px solid #d0d7de; border-radius: 6px; font-family: ui-monospace, SFMono-Regular, 'SF Mono', Consolas, 'Liberation Mono', Menlo, monospace; font-size: 12px; background-color: #f6f8fa;"></textarea>
{% raw %}
<script type="text/javascript"> document.addEventListener('DOMContentLoaded', function() { function $(id) { return document.getElementById(id); } $('execute').addEventListener('click', function() { var crypt = new JSEncrypt(); crypt.setPrivateKey($('privkey').value); var pubkey = $('pubkey').value; if (!pubkey) { $('pubkey').value = crypt.getPublicKey(); } var input = $('input').value; var crypted = $('crypted').value; if (input) { $('crypted').value = crypt.encrypt(input); $('input').value = ''; } else if (crypted) { var decrypted = crypt.decrypt(crypted); if (!decrypted) decrypted = 'This is a test!'; $('input').value = decrypted; $('crypted').value = ''; } }); var generateKeys = function () { var keySize = parseInt($('key-size').value); var crypt = new JSEncrypt({default_key_size: keySize}); var asyncCheckbox = $('async-ck'); var async = asyncCheckbox.checked; var dt = new Date(); var time = -(dt.getTime()); if (async) { $('time-report').textContent = '.'; var load = setInterval(function () { var text = $('time-report').textContent; $('time-report').textContent = text + '.'; }, 500); crypt.getKey(function () { clearInterval(load); dt = new Date(); time += (dt.getTime()); $('time-report').textContent = 'Generated in ' + time + ' ms'; $('privkey').value = crypt.getPrivateKey(); $('pubkey').value = crypt.getPublicKey(); }); return; } crypt.getKey(); dt = new Date(); time += (dt.getTime()); $('time-report').textContent = 'Generated in ' + time + ' ms'; $('privkey').value = crypt.getPrivateKey(); $('pubkey').value = crypt.getPublicKey(); }; $('generate').addEventListener('click', generateKeys); generateKeys(); }); </script>{% endraw %}