在JavaScript中使用两种方式散列JSON字符串以在URL中使用

时间:2015-12-10 21:56:41

标签: javascript json url encryption base64

我想接受一个JSON字符串并对其进行加密/散列/编码,以便我可以将其放入一个URL中,以便它类似于下面所示的内容:

var stringToEncode = JSON.stringify({foo: 'baz', bar: [1,2,3,4,5], baz: {fizzle: 'buzz'}});

'www.myrandomurl.com/someurl/123fas234asf1543rasfsafda'

然后我想接受加密/散列/编码的字符串,并将其解码回原始的JSON字符串,以便我可以使用它绑定到单页AngularJS应用程序上的各种元素。

JSON字符串的内容不敏感,因此不需要安全性或复杂的散列。唯一的条件是它需要是一个" URL / URI' safe'"为了虚荣目的而进行哈希处理的字符串,如上所示。

我对加密/编码的知识有限,但我想过简单地将字符串编码为Base64并再次解码。

这是最好的方法吗?如果不是,有什么更好的方法?

1 个答案:

答案 0 :(得分:5)

使用encodeURIComponent()对其进行编码以获取网址

解码使用decodeURIComponent()功能

Base64不是网址安全的,因为它可以包含非网址字符,例如/ + - 。 (See this question)

如果您希望您的网址与原始字符串不太相似,您可以首先转换为base64,然后通过解码编码并反转并从基础64返回covrrtibg

// to url
encodeURIComponent(btoa(str))

// from url
atob(decodeURIComponent(uri))