Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function decrypt(data, password, success, error) {
- var modes = [ new Crypto.mode.CBC(Crypto.pad.iso10126), new Crypto.mode.OFB(Crypto.pad.iso7816), new Crypto.mode.CBC(Crypto.pad.NoPadding), new Crypto.mode.CBC(Crypto.pad.ZeroPadding)];
- for (var mi = 0; mi < modes.length; ++mi) {
- var mode = modes[mi];
- for (var i = 10; i < 20; ++i) {
- try {
- var decoded = Crypto.AES.decrypt(data, password, { mode: mode, iterations : i });
- if (decoded != null && decoded.length > 0) {
- if (success(decoded)) {
- return decoded;
- };
- };
- } catch (e) {
- console.log(e);
- }
- }
- for (var i = 0; i < 10; ++i) {
- try {
- var decoded = Crypto.AES.decrypt(data, password, { mode: mode, iterations : i });
- if (decoded != null && decoded.length > 0) {
- if (success(decoded)) {
- return decoded;
- };
- };
- } catch (e) {
- console.log(e);
- }
- }
- }
- if (error != null)
- error();
- return null;
- }
- function do_decrypt() {
- try {
- document.getElementById('error').innerHTML = '';
- var encrypted = document.getElementById('enc-json').value;
- if (encrypted == null || encrypted.length == 0)
- throw 'You must copy and paste your encrypted backup into the first text area';
- var password = document.getElementById('password').value;
- if (password == null || password.length == 0) {
- throw 'You must enter a password';
- }
- var decrypted = decrypt(encrypted, password, function(decrypted) {
- try {
- obj = JSON.parse(decrypted);
- return (obj != null);
- } catch (e) {
- console.log(e);
- return false;
- };
- });
- if (decrypted == null || decrypted.length == 0)
- throw 'No backup returned';
- var obj = JSON.parse(decrypted);
- if (obj.double_encryption) {
- var pass = prompt("Please enter your second password", null);
- for (var i = 0; i < obj.keys.length; ++i) {
- obj.keys[i].priv = decrypt(obj.keys[i].priv, obj.sharedKey + pass, isBase58);
- }
- decrypted = JSON.stringify(obj);
- }
- var ul = document.getElementById('ul-keys');
- for (var i = 0; i < obj.keys.length; ++i) {
- var li = document.createElement('li');
- li.innerHTML = '<b>'+ obj.keys[i].addr + '</b> - ' + obj.keys[i].priv;
- ul.appendChild(li);
- }
- document.getElementById('plain-json').value = decrypted;
- } catch(e) {
- console.log(e);
- document.getElementById('error').innerHTML = 'Unable to decrypt backup ' + e;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement