在javascript中加密对象
encrypting an object in 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));
- 我应该在字符串化对象之前还是之后加密它。
- 在javascript中有哪些加密对象的方法?任何的例子那太好了。
你不能真正加密对象,但你可以加密字符串,所以你可能应该先做一个对象序列化(JSON.stringify
),然后用对称加密算法加密它,这样你就可以稍后解码对象。
我真的不能提供一个很好的例子,因为javascript总是有严重的安全问题(作为一种客户端编程语言),即使你尝试一个相当复杂的算法(如AES),它仍然是脆弱的,因为用户只能看到你的源代码,从而看到你的加密/描述算法。如果你只是想改变字符串一点,这样它就不能在第一次看时被破译,你可以简单地使用一些内置的javascript方法(如encodeURI/decodeURI),或者你可以做一些字符替换,甚至使用盐类。
下面是一个如何"加密"对象的示例演示:
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);
当然,这只是一个例子,你应该修改它,以便加密更复杂的对象,在你需要加密函数的地方,或者对象有循环引用的地方。
相关文章:
- 引用对象中的通用值
- jQuery匹配JSON对象的部分文本
- 节点导出返回一个空对象
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 全局变量和全局对象的属性之间有什么区别吗
- 比较从函数和生成的日期对象
- Javascript,访问一个主要对象模块模式中的每个对象
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 调整窗口大小时,可拖动的对象会出现在容器外部
- 如何使用javascript从主svg对象动态创建svg视图框
- 如何使用json将对象列表从java转换为javascript
- 序列化数据属性中对象的最可靠方法
- 如何访问声音管理器2创建的声音对象
- FabricJs-限制主对象内添加对象的移动区域
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 在JS和C#之间共享加密数据,用于虚拟对象
- 在javascript中加密对象
- 只加密json密钥值,并获得整个json对象的响应与密钥值加密