在保持字符串同等有效的情况下对其进行视觉加扰
Visually Scrambling a String While Keeping It Equally Valid
这更像是一件有趣的事情,但因为我很好奇。。
假设我们有一个字符串(~在JavaScript中):
var str = "stackoverflow
现在,还要说这个字符串应该在视觉上被遮挡,这样,如果你通读,你就不会只在那里看到stackoverflow
,而是会看到一些更难简单阅读的东西。我想把它变成一个数字形式,然后把它转换成像其他字符串一样读取。不知道这是否可能,但我会试试,因为它很有趣。
所以,我的问题是,在保持字符串完全有效的情况下,你个人将如何做到这一点?我个人试着放了一堆Regex,它们对我自己的娱乐毫无帮助。再说一次,这更像是因为我是一个严肃的类型,可能不会被使用。
示例:
var str = `s./''t./ack;
输出:
stack
显然,这段代码是完全不可能的,但它只是说明了我所看到的。
Base64非常常见。不幸的是,JavaScript不提供本机Base64支持,但您可以在PHPJS中找到编码和解码功能。
示例:
var str = "c3RhY2tvdmVyZmxvdw";
alert(base64_decode(str)); // alerts "stackoverflow"
EDIT:正如Charmander(喜欢这个名字^_^)所指出的,一些浏览器(Firefox、Chrome…)实际上支持Base64。它们只是有一些非常奇怪的函数名称:btoa()
要编码,atob()
要解码。
您可以将每个字符编码为一个字符实体:
"'u0073'u0074'u0061'u0063'u006b'u006f'u0076'u0065'u0072'u0066'u006c'u006f'u0077"
模糊处理在很大程度上是没有意义的(如果这是您的目标),但根据请求,stackoverflow
在字符串中不再可见。执行编码的功能:
function uniencode(str) {
function pad(str) {
return Array(5 - str.length).join('0') + str;
}
return Array.prototype.map.call(str, function(c) {
return '''u' + pad(c.charCodeAt(0).toString(16));
}).join('');
}
http://www.javascriptobfuscator.com/default.aspx
var _0x6ee4=["'x73'x74'x61'x63'x6B'x6F'x76'x65'x72'x66'x6C'x6F'x77"];
var str=_0x6ee4[0];
相关文章:
- 如何在未直接触发的情况下停止事件
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 在不使用jquery的情况下查找页面中的所有锚点并附加函数
- 在不打开聊天屏幕的情况下制作Zopim-ding代理
- 在不阻止默认行为的情况下检测IE10中的缩放
- 如何在不传递此信息的情况下查找被调用的元素
- 如何在不刷新页面的情况下更新显示框
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- JavaScript-在手机上不工作的情况下,在外部单击时隐藏元素
- 在我的情况下,如何进行http请求
- 在不知道深度或父属性的情况下从对象中删除属性
- 在不破坏未定义函数的情况下,对多个视图使用单个js文件
- ROR:如何在不重新加载浏览器的情况下从控制器获取参数
- 如何在不影响其他元素的情况下扩展DIV
- 如何在内联依赖项并将图像转换为dataURI的情况下完全提取网页
- 在不移动内部文本的情况下缩放元素的效果
- 在不设置协议的情况下,使用javascript/jquery更改iframe-src
- 默认情况下折叠和展开嵌套列表
- 如何在不单击javascript中的按钮的情况下触发事件
- 在保持字符串同等有效的情况下对其进行视觉加扰