作为练习,我一直在复制 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/