用于URL的JavaScript中的双向哈希JSON字符串

Two way hashing JSON String in JavaScript for use in URL

本文关键字:哈希 JSON 字符串 URL JavaScript 用于      更新时间:2023-09-26

我想获取一个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并再次解码。

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

使用encodeURIComponent()对url 进行编码

使用decodeURIComponent()功能进行解码

Base64不是URL安全的,因为它可以包含非URL字符,如/+-。(见此问题)

如果你想让你的url与原始字符串不太相似,你可以先转换到base64,然后通过解码和从base64 返回编码和反向

// to url
encodeURIComponent(btoa(str))
// from url
atob(decodeURIComponent(uri))