Javascript 在使用 AES 发送前加密表单
Javascript Encrypt Form before sending with AES
我正在尝试使用本地 En/Decryption 构建一个日记系统,这样条目只能由使用密码的用户读取,密码不会存储在服务器上。
Crypto 应该使用 Javascript(CryptoJS) 完成,但我必须在发送之前处理 HTML-form 的数据。
如果可能的话,由于性能和带宽的原因,应该在没有 JQuery 的情况下完成。
因为我对 java 脚本比较陌生,所以我不知道如何在单击提交按钮时操作表单的数据? :)
var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase");
我不知道为什么您认为 jquery 很慢或给您发送大量数据。
但是你可以将任何 jquery 代码转换为正常的 javascript 所以这应该没有问题。我会在 jquery 中给出一些提示,因为我不知道纯 js 中的所有内容,也不会 google 这个给你 :)
$("#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.
});
我正在尝试使用本地 En/Decryption 构建一个日记系统,这样条目只能由使用密码的用户读取,密码不会存储在服务器上。 Crypto 应该使用 Javascript(CryptoJS) 完成,但我必须在发送之前处理 HTML-form 的数据。 如果可能的话,由于性能和带宽的原因,应该在没有 JQuery 的情况下完成。 因为我对 java 脚本比较陌生,所以我不知道如何在单击提交按钮时操作表单的数据? :)
var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase");
我不知道为什么您认为 jquery 很慢或给您发送大量数据。 但是你可以将任何 jquery 代码转换为正常的 javascript 所以这应该没有问题。我会在 jquery 中给出一些提示,因为我不知道纯 js 中的所有内容,也不会 google 这个给你 :)
$("#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.
});