【问题标题】:Decrypt array to string将数组解密为字符串
【发布时间】:2013-08-10 05:35:52
【问题描述】:

我目前有一个如下所示的数组:

["screen", "left_side", "left_side", "right_side", "left_side", "right_side", "left_side", "right_side"]

我现在想以某种方式对其进行加密,以便将其用作 URL,例如:http://www.site.com/app.html?array=... 这是因为我希望允许用户共享他们的数组。

有什么方法可以加密一个数组,使其在 URL 字符串中可用,然后再解密?

【问题讨论】:

  • “加密”?我认为您的意思是“编码”。
  • @nnnnnn 我想这取决于你如何看待它,我想安全地共享一个数组而不会使字符串太长。
  • 而你的话只能是left_side、right_side和screen?
  • @xanatos 还有一些其他的词,但理论上都是固定的,所以我基本上可以将它们转换为固定的数字。

标签: javascript jquery arrays url


【解决方案1】:

您可以使用atobbtoa 函数。

myArray = ["screen", "left_side", "left_side", "right_side", "left_side", "right_side", "left_side", "right_side"]
btoa(JSON.stringify(myArray)) // "WyJzY3JlZW4iLCJsZWZ0X3NpZGUiLCJsZWZ0X3NpZGUiLCJyaWdodF9zaWRlIiwibGVmdF9zaWRlIiwicmlnaHRfc2lkZSIsImxlZnRfc2lkZSIsInJpZ2h0X3NpZGUiXQ=="

然后您可以将其转换回原始数组

array = JSON.parse(atob(str))

如果您包含LZString(如 cmets 中所述),您可以获得更短的字符串。

var str = btoa(JSON.stringify(myArray)); // 132 characters
var str = LZString.compressToBase64(JSON.stringify(myArray)); // 72 characters
var str = LZString.compressToBase64(myArray.toString()); // 64 characters

解压缩,

array = JSON.parse(LZString.decompressFromBase64(str));

fiddle

【讨论】:

  • 我会在这个解决方案中添加压缩。见compressToBase64pieroxy.net/blog/pages/lz-string/index.html
  • 谢谢@Paul。我添加了这方面的例子。您可以使用它将该数组压缩到一半大小。
  • 我已经看到使用 LZString.compressToUTF16 将表格数据存储在 localStorage 中的大约 5:1 压缩与我一直在使用的库 html5csv.js
【解决方案2】:

这可能对你有帮助...

<script>

var uri='http://www.site.com/app.html?["screen", "left_side", "left_side", "right_side", "left_side", "right_side", "left_side", "right_side"]';
var uri_encode=encodeURIComponent(uri);
document.write(uri_encode);
document.write("<br>");
document.write(decodeURIComponent(uri_encode));

</script>

JsFiddle

【讨论】:

    【解决方案3】:

    这应该可行。

    var a = [“屏幕”,“left_side”,“left_side”,“right_side”,“left_side”, “右侧”、“左侧”、“右侧”]; var stringa = a.toString; var encodea = encodeURI(stringa);

    那就这样用吧

    var site = "http://www.site.com/app.html?array=" + a;

    【讨论】:

      猜你喜欢
      • 2012-07-17
      • 1970-01-01
      • 2017-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-14
      相关资源
      最近更新 更多