2012-08-03 16 views
0

這更多的是一個有趣的事情,但因爲我很好奇......(這本質上是迷惑,但我解釋它,所以每個人都可以從中得到一些東西)視覺上加擾一個字符串,同時保持它同等有效

說我們有一個字符串(〜在JavaScript):

var str = "stackoverflow

現在,也有人說,這串應視認,這樣,如果你是通過你讀不只是看到stackoverflow那裏,而不是簡單地閱讀一些有點難。我正在考慮將它放入一個數字形式,然後將它轉換爲像任何其他字符串一樣讀取。不知道是否有可能,但我會嘗試它,因爲它很有趣。

所以,我的問題是,你會如何親自做到這一點,同時保持字符串完全有效?我個人嘗試加入一堆正則表達式,這對我自己的樂趣沒有任何幫助。再一次,這更多的是因爲我很好奇類型的東西,並且可能不會被使用。

例子:

var str = `s./\\t./ack; 

輸出:

stack

顯然,該代碼是完全不可能的,但它只是說明了什麼我看。

+1

你可以給一個之前和之後你是什麼意思? – 2012-08-03 19:36:23

+0

絕對!只需一秒鐘 – JTApps 2012-08-03 19:36:45

+0

將其轉換爲二進制!可以很容易地在JavaScript本地完成 – 2012-08-03 19:39:14

回答

1

Base64很常見。不幸的是,JavaScript不提供本地Base64支持,但您可以在PHPJS上找到encodingdecoding函數。

例子:

var str = "c3RhY2tvdmVyZmxvdw"; 
alert(base64_decode(str)); // alerts "stackoverflow" 

編輯:由於火龍指出(喜歡這個名字^ _ ^),一些瀏覽器(Firefox,Chrome瀏覽器...)實際上支持的Base64做。他們的功能真的很奇怪:btoa()編碼和atob()解碼。

+0

請注意,某些瀏覽器分別爲編碼和解碼提供'btoa'和'atob';如果有的話使用這些。 – 2012-08-03 19:45:04

+0

啊,我喜歡這個。我會看一看。我想知道編碼和解碼有什麼其他的可能性,哦,課程哈希是不可能的..我會花一些時間研究 – JTApps 2012-08-03 19:46:24

+0

嗯,好的考慮我糾正。 – 2012-08-03 19:46:36

1

你可以每個字符編碼爲一個字符實體:

"\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(''); 
} 
+0

有趣的想法,你認爲你可以把它,並將其轉換爲它的unicode等效? – JTApps 2012-08-03 19:41:30

+0

我很確定它會自動解析並讀取它們所代表的字符。 – 2012-08-03 19:43:28

+0

@JTApps:Kolink是正確的;解碼是自動的。字符串中的Unicode轉義是JavaScript語法的一部分。我還提供了執行編碼的功能。 – 2012-08-03 19:45:52

0

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]; 
+0

「_0x6ee4」變量的用途是什麼? – 2012-08-03 19:45:34

+0

@Kolink沒有任何目的,它的混淆:P – jbabey 2012-08-03 19:46:55

+0

@jbabey我喜歡那個評論 – JTApps 2012-08-03 19:47:39

相關問題