在打印的JavaScript代码中隐藏消息(待查找)
Hiding a message (to be found) in printed JavaScript code
我曾被一家网络公司要求为他们提供大约30行HTML/javascript代码,用于墙壁显示。该代码需要是一段真正有效的代码,可以在现代浏览器中执行,并显示大约30个单词或更少的消息(例如,公司的聪明/厚颜无耻的品牌信息)。
一个大的document.write()
语句可以做到这一点,但他们正在寻找一些更能隐藏信息的东西。从本质上讲,他们希望制作一个视觉谜题,对没有中级JS理解的人隐藏他们的信息。
对于一个外行来说,它应该只是看起来像随机代码。
我正在寻找如何做这件事的想法/建议。我尝试过使用自动javascript迷你器或模糊器在线,但这些通常输出的代码是完全不可读的人类,我想要的是它是难以为人类/编码员阅读,但不是不可能的。
假设要隐藏的信息是:
"爱你,爱你,爱你。"Praesent这就是ipsum ipsum。妊娠前妊娠前妊娠。"
我该怎么做呢?
HTML/CSS, JS &
(版主,如果这个问题不适合堆栈溢出,请把这个问题移到更合适的地方)
听起来像是一个有趣的编程挑战,除了有效的HTML/JS/CSS之外,还需要针对人类代码解释器。
一个想法是以某种混乱或碎片(可读)的形式显示消息,然后显示一些解码消息的代码。一个简单的例子:
var a = [" consectetur",
"dolor",
"Lorem ipsum ",
" sit amet,"];
return a[2] + a[1] + a[3] + a[0];
通过在其他(可能不相关的代码)中分散/隐藏相关的字符串片段,使用条件来确定要连接的变量,让相关的数组索引由一些计算/函数调用或逻辑分支的结果决定,等等,可以使这变得更加困难(并且具有挑战性)。
编码消息不太明显(但仍然可以从代码中读取)的示例:
<script id="codeblock">
//JavaScript
function getHTML(id) {
return document.getElementById(id).innerHTML;
}
var myFavorites = [
'No Woman No Cry',
'Exodus',
'Is This Love',
'Buffalo Solder',
'Could You Be Loved'
];
var didYouGetTheMessage = (function(letters){
var x = letters.split(''),
y = myFavorites,
z = getHTML('codeblock').split(''/'/')[1];
x.reverse();
return [x[17],
y[2].slice(-4),
z.slice(0, 10)]
.join(' ');
})('ABCDEFGHIJKLMNOPQRSTUVWXYZ');
//If you still did not get it ...
console.log(didYouGetTheMessage);
</script>
我想,实现这一目标的挑战在于找到一个人在阅读代码时能够理解的困难和有趣之间的平衡,而不是需要花费太多精力的东西。
如果您希望隐藏对正在查看页面源代码的人可见的确切消息,您可以加密字符串并将其(硬编码)存储在脚本中的一个变量中。你可以在需要展示的时候解密它。这样,如果有人查看源代码,他们就不会看到您显示的确切句子。然而,熟悉JavaScript的人仍然能够看到你在做什么编程来显示它。
- 正在全局范围中查找JavaScript函数
- Javascript(Angular)从一个对象数组到第二个数组查找值
- Ajax聊天消息重复而不仅仅是更新
- 在不使用jquery的情况下查找页面中的所有锚点并附加函数
- es6 相当于下划线查找位置
- 如果localstorage为空,则显示欢迎消息
- 在DOM中查找一个模式并替换它's的内容使用jquery
- 绑定时将Parsley minlength消息作为选项传递时,未对其进行自定义
- 离开页面时弹出消息
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 如何在不传递此信息的情况下查找被调用的元素
- Lodash 从值数组中查找数组中的值
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- 如何使用JavaScript查找1和N之间的所有数字的总和
- 使用RegExp查找url中的字符
- 查找元素高度,包括边距
- 消息显示之外的淘汰验证
- 选项卡侦听器未被来自后台脚本的消息激活
- 使用JS查找数组的平均值
- 在打印的JavaScript代码中隐藏消息(待查找)