使用AES发送之前的Javascript加密表单

时间:2015-04-11 23:02:58

标签: javascript encryption

我正在尝试使用本地En / Decryption构建日记系统,以便用户只能使用密码来读取条目,密码不会存储在服务器上。 加密应该用Javascript(CryptoJS)完成,但我必须在它发送之前操纵HTML表单的数据。 如果可能,由于性能和带宽,这应该在没有JQuery的情况下完成。 因为我对java脚本相对较新,我不知道,当提交按钮被点击时,如何操作表单中的数据? :)

var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase");

1 个答案:

答案 0 :(得分:1)

我不知道你为什么认为jquery很慢或者给你发送大量数据。 但你可以将任何jquery代码转换为普通的javascript,所以这应该没问题。我将在jquery中给出一些提示,因为我不知道纯js中的所有内容,也不会谷歌这个为你:)

$("#submitbutton").click(function(event){
    event.preventDefault(); //Prevent form beeing send
    var allFormDatas = {}; //Object thats stores all form data
    $.each($("#youtform").find("input"),function() { //loop over all inputs in the form
        allFormDatas[$(this).attr("name")] = $(this).val(); //Gets the value from an form element and puts into "allFormDatas"
    });

    var stringForEncryption = JSON.stringify(allFormDatas); //Now we have one long Json string for encryption
    var encrypted = CryptoJS.AES.encrypt(stringForEncryption, "Secret Passphrase");
    //Now use $.post here to send post data to your backend.
});

//Encryption should be 
encrypted>decrypt>parseJson>jsObject

PS:这没有经过测试,也不会得到下拉列表和复选框元素,但是我希望你能得到一个想法:)


编辑:更智能的解决方案......感谢@dandavis:

$( "form" ).on( "submit", function( event ) {
  event.preventDefault();
  var formString = $( this ).serialize(); // All data in one String.
  var encrypted = CryptoJS.AES.encrypt(formString, "Secret Passphrase");
  //Now use $.post here to send post data to your backend.
});