Skip to content

Latest commit

 

History

History
132 lines (120 loc) · 4.85 KB

File metadata and controls

132 lines (120 loc) · 4.85 KB
layout title nav_order permalink aliases
default
Demo
3
/demo/
/demo.html

Online RSA Key Generator

{: .fs-9 }

Interactive RSA encryption demo running entirely in your browser. {: .fs-6 .fw-300 }


Key Generation

Key Size: 512 bit 1024 bit 2048 bit 4096 bit
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>

Encryption Test

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>
<script type="text/javascript" src="{{ site.baseurl }}/bin/jsencrypt.min.js"></script>

{% 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 %}