javascript - 用于模糊/加密字符串的 native 选项?

标签 javascript string encryption

作为练习,我一直在复制 this game 。如果它变得无法访问,游戏的前提是获取通过交换字母对而打乱的报价(例如,将 A 替换为 M,反之亦然),并将其重新打乱为原始排列。

当我研究这个游戏时,我意识到从源代码中提取解决方案几乎是微不足道的 - 您可以放置​​任意数量的断点来访问它。我一直在尝试想出一种方法来模糊字符串,使其无法立即访问,而我唯一能想到的是在引用有机会落地之前使用某种 native 模糊函数在一个变量中。像这样的事情:

var litmus, quotes = [
    "String One",
    "String Two",
    ....
    "String n",
];

litmus = obscureString(quotes[Math.floor(Math.random()*(n-1))]);

这样用户就无法调用原始引用,甚至无法调用所使用的随机整数 - 当断点命中时它们就消失了。

我的问题是:是否有任何类型的 native 函数适合 obscureString() 的 Angular 色在上面的例子中,甚至是松散的?我知道 JavaScript 没有任何 native 加密/哈希方法,以及任何 libraries提供该功能的只是提供了删除断点的机会。因此,我希望这里有人能够想出一种创造性的方法来本地模糊字符串,如果这在 JS 中可行的话。

最佳答案

研究了一段时间,我找到了一个非常的临时解决方案。

我能找到的唯一 native (读取:不可用户损坏)转换/哈希函数是window.btoa。它完全满足了我的需要,让我在用户有机会接触到字符串之前将其隐藏起来。然而,问题在于它有一个对应的 window.atob,其唯一目的是反转该过程。

为了解决这个问题,我能够使用以下代码行来中和 window.atob,本质上使 window.btoa 成为单向旅程:

window.atob = function(f){ return f; };

不要养成这种习惯。

这是可怕的做法,我觉得写它很肮脏。在这种情况下这是可以接受的,因为我的应用程序很小,独立,并且永远不需要在其他地方依赖该函数 - 但我不能凭良心推荐它作为通用解决方案。许多浏览器甚至不允许您首先覆盖 native 函数。

只是想发布答案,以防有人发现自己处于类似的情况,需要类似的答案 - 这可能是我们目前可以得到的最接近单向 native 哈希函数的结果。

关于javascript - 用于模糊/加密字符串的 native 选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27574664/

相关文章:

javascript - 使用jquery判断复选框是否被选中

ios - NSAttributedString绘图-多少行?

c++ - 使用 wstring 获取行读取文件

c++ - 从字符串中获取键/值对并存储在映射中

python - Erlang 和 Python 之间的 RSA 加密

java - Phpseclib 相当于 Java RSA 加密

javascript - 基于 HTML/CSS/JS 中先前输入字段的新输入

javascript - jquery中无法比较两个 float

javascript - 使用 JavaScript 获取 JSON 文件

ios - 验证加密数据是否未被篡改