var randomString = function(length, chars) { var result = ''; for (var i = length; i > 0; --i) { result += chars[Math.round(Math.random() * (chars.length - 1))]; } return result; } var JsonFormatter = { stringify: function (cipherParams) { var jsonObj = { ct: cipherParams.ciphertext.toString(CryptoJS.enc.Base64) }; if (cipherParams.iv) { jsonObj.iv = cipherParams.iv.toString(); } if (cipherParams.salt) { jsonObj.s = cipherParams.salt.toString(); } return JSON.stringify(jsonObj); }, parse: function (jsonStr) { var jsonObj = JSON.parse(jsonStr); var cipherParams = CryptoJS.lib.CipherParams.create({ ciphertext: CryptoJS.enc.Base64.parse(jsonObj.ct) }); if (jsonObj.iv) { cipherParams.iv = CryptoJS.enc.Hex.parse(jsonObj.iv) } if (jsonObj.s) { cipherParams.salt = CryptoJS.enc.Hex.parse(jsonObj.s) } return cipherParams; } }; $(document).ready(function() { $('#adding-form') .attr('action', '/index.php') .bind( 'submit', function() { if ($('#aes:checked').length) { var passphrase = randomString(256, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'); var code = $('#code').val(); var encrypted = CryptoJS.AES.encrypt(code, passphrase, {format: JsonFormatter}); $('#aes').val(passphrase); $('#code').val(encrypted); } return true; } ); $('#adding-language button').click(function() { $('#language').val($(this).val()); $('#adding-language button').removeClass('btn-primary'); $(this).addClass('btn-primary'); if ($.inArray($(this).val(), ['html', 'xml', 'javascript', 'php']) !== -1) { $('#indent').show(); } else { $('#indent').hide().find('input').removeAttr('checked'); } }); $('#adding-line button').click(function() { $('#line').val($(this).val()); $('#adding-line button').removeClass('btn-primary'); $(this).addClass('btn-primary'); }); var url = document.location.href; var parts = url.split('#aes='); var options = parts[0].split('/'); if (parts.length === 2) { if (options[4] !== 'texte' || options[5] != '0') { options[4] = 'texte'; options[5] = '0'; parts[0] = options.join('/'); document.location.href = parts.join('#aes='); } $('#options .btn:not(#new)').hide(); $('#new').css('margin-left', -17); var decrypted = CryptoJS.AES.decrypt($('#wall > pre').html(), parts[1], {format: JsonFormatter}); $('#wall > pre').text(decrypted.toString(CryptoJS.enc.Utf8)); } });