var Obj = {};
Obj.ID = e.row.ID;
Obj.firstName = e.row.firstName;
Obj.lastName = e.row.lastName;
Run Code Online (Sandbox Code Playgroud)
这是我的对象,我将此对象保存在文件中.现在在保存到文件之前,我想加密它并保存,而在阅读时我想要解密和阅读.
var newFile = FileSystemPath;
newFile.write(JSON.stringify(object));
Run Code Online (Sandbox Code Playgroud)
你不能真正加密对象,但你可以加密字符串,所以你应该首先做一个对象序列化(JSON.stringify),然后用对称加密算法加密它,这样你就可以在以后解码对象.
我无法提供一个很好的例子,因为javascript总会出现严重的安全问题(作为客户端编程语言),即使你尝试了相当复杂的算法(如AES),它仍然会容易受到攻击,因为用户只需查看您的源代码,即可查看您的编码/解密算法.
如果你只是想稍微改变字符串以便在第一次看时无法解密,你可以简单地使用一些内置的javascript方法(例如encodeURI/decodeURI),或者你可以做一些字符替换甚至使用salt.
以下是如何"加密"对象的示例演示:
function encrypt(o, salt) {
o = JSON.stringify(o).split('');
for(var i = 0, l = o.length; i < l; i++)
if(o[i] == '{')
o[i] = '}';
else if(o[i] == '}')
o[i] = '{';
return encodeURI(salt + o.join(''));
}
function decrypt(o, salt) {
o = decodeURI(o);
if(salt && o.indexOf(salt) != 0)
throw new Error('object cannot be decrypted');
o = o.substring(salt.length).split('');
for(var i = 0, l = o.length; i < l; i++)
if(o[i] == '{')
o[i] = '}';
else if(o[i] == '}')
o[i] = '{';
return JSON.parse(o.join(''));
}
var obj = {
key : 'value',
3 : 1
};
var salt = "some string here";
var encrypted = encrypt(obj, salt);
var decrypted = decrypt(encripted, salt);
Run Code Online (Sandbox Code Playgroud)
当然,这只是一个示例,您应该修改它以便编写更复杂的对象,您需要ecnript函数,或者对象具有循环引用.
| 归档时间: |
|
| 查看次数: |
4490 次 |
| 最近记录: |