我有一个JSON对象,它是从一个表单的serializeArray函数生成的,我想对它进行加密。 我正在开发的应用程序只计划作为本地文件运行。 那么对数据进行加密最好的选项是什么?
我有一个JSON对象,它是从一个表单的serializeArray函数生成的,我想对它进行加密。 我正在开发的应用程序只计划作为本地文件运行。 那么对数据进行加密最好的选项是什么?
只是一个想法。可以像这个示例中建议的那样使用cryptoJS:
var secret = "My Secret Passphrase";
var plainText = "the brown fox jumped over the lazy dog";
var encrypted = CryptoJS.AES.encrypt(plainText, secret);
var decrypted = CryptoJS.AES.decrypt(encrypted, secret);
document.getElementById("m1").innerHTML = encrypted;
document.getElementById("m2").innerHTML = decrypted;
document.getElementById("m3").innerHTML = decrypted.toString(CryptoJS.enc.Utf8);
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script>
<label>encrypted</label>
<div id="m1"></div>
<br>
<label>decrypted</label>
<div id="m2"></div>
<br>
<label>Original message</label>
<div id="m3"></div>
并且在将所有数据放入本地存储之前对其进行加密。 我不认为你能够实现这一点,除非向用户询问某种密码。
Try out this. This worked out for me well for dynamic json data as well as normal text.
var key = CryptoJS.enc.Utf8.parse("93wj660t8fok9jws");
// Please parse the your secret key
var iv = CryptoJS.enc.Utf8.parse(CryptoJS.lib.WordArray.random(128 / 8));
function encrypt(plainText) {
return CryptoJS.AES.encrypt(
plainText, key,{ iv: iv,padding:CryptoJS.pad.Pkcs7,
mode:CryptoJS.mode.CBC }).ciphertext.toString(CryptoJS.enc.Base64);
}
function decrypt(encryptedText) {
var cipherParams = CryptoJS.lib.CipherParams.create(
{
ciphertext: CryptoJS.enc.Base64.parse(encryptedText)
});
return CryptoJS.AES.decrypt(cipherParams, key, { iv: iv,
padding: CryptoJS.pad.Pkcs7,
mode: CryptoJS.mode.CBC
}).toString(CryptoJS.enc.Utf8);
}
var start = new Date().getTime();
var encrypted = encrypt(
'{\"name\": \"Sushant\", \"loves\": \"cats\"}'
);
var end = new Date().getTime();
console.log(end - start);
document.getElementById('enc').innerHTML = encrypted;
document.getElementById('dec').innerHTML = decrypt(encrypted);
btoa
和atob
将其转换为和从base64中进行转换。这不是加密,但可以防止大多数用户搞乱文件,并且不需要外部库。 - pasx