javascript - 在javascript中加密对象

标签 javascript

var Obj = {};
Obj.ID = e.row.ID;
Obj.firstName = e.row.firstName;
Obj.lastName = e.row.lastName;

这是我的对象,我将这个对象保存在一个文件中。现在在保存到文件之前,我想加密并保存,在阅读时我想解密和阅读。

var newFile = FileSystemPath;
newFile.write(JSON.stringify(object));
  1. 我应该在字符串化之前或之后加密对象。
  2. 在 javascript 中加密对象的方法有哪些。任何例子 会很棒。

最佳答案

你不能真正加密对象,但你可以加密字符串,所以你应该先做一个对象序列化(JSON.stringify),然后用对称加密算法加密它,这样你就可以稍后能够解码对象。
我真的不能提供一个很好的例子,因为 javascript 总是会有严重的安全问题(作为一种客户端编程语言),即使你尝试了一个相当复杂的算法(比如 AES )它仍然容易受到攻击,因为用户可以只看到你的源代码,从而看到你的加密/解密算法。
如果你只是想稍微改变一下字符串,这样它在第一眼看起来就无法被破译,你可以简单地使用一些内置的 javascript 方法(例如 encodeURI/decodeURI)或者你可以做一些字符替换甚至使用 salts .

这是一个演示如何“加密”对象的示例:

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);

当然,这只是一个例子,你应该修改它以便加密更复杂的对象,你需要加密函数的地方,或者对象有循环引用的地方。

关于javascript - 在javascript中加密对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7606970/

相关文章:

javascript - 从 HighCharts 中的 JSON 动态添加类别和系列

javascript - 在 JavaScript 中生成带有随机数的按钮并插入到 DOM 中

javascript - Draft.js和stateToHTML,如何在react组件中渲染输出html?

javascript - Indesign CS6 脚本 - 导出图像

javascript - 使用 jquery 在移动浏览器中检索屏幕的视口(viewport)高度

javascript - 如何以 Angular 将参数传递给服务中的函数

javascript - 我可以从 Protractor 测试中访问文档或窗口对象吗?

javascript - 为什么这个post方法没有被检索到?

javascript - 以编程方式加载后 onChange 事件错误触发

javascript - Selenium:WAITING元素的宽度大于X