101 lines
2.9 KiB
JavaScript
101 lines
2.9 KiB
JavaScript
|
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));
|
||
|
}
|
||
|
});
|