2013-06-29 29 views
0

我正在尋找超快速和緊湊的Javascript代碼或函數來解密和解密存儲在數組中的文本。JavaScript文本數組數據加擾和解擾

我只希望當用戶進入瀏覽器的「查看源代碼」模式時,該文本不可讀。

有許多選項,如添加固定電話號碼,以ASCII碼或做一些邏輯運算像移,換向,換到八進制,十六進制等

我需要這個無論是文字和數字字符串的字符串。這將是最好的,如果在擾碼,其中不復雜,不包含」標誌,」,#,$,&,/等

var c = new Array(); 
c[0]=new Array("Name","Home","City","Post code","Telephone","email","Web","Id","Number","xpos","ypos"); 
c[1]=new Array("John","Street 123","1234","New York","555-1450123","[email protected]","www.demo1.com","b",59,306380,565500); 
c[2]=new Array("Poul","Street 1234","2345","New York","555-7010123","[email protected]","www.demo2.com","i",113,308396,635477); 
c[3]=new Array("David","Street 12345","3456","New York","555-3111123","[email protected]","www.demo3.com","i",129,377615,581358); 

var Scrambler = function(n) { return ASCII(n)+1...; } 
var DeScrambler = function(n) { return ASCII(n)-1...; } 

$(function() { 
for (var i = 0; i < c[0].length; ++i) { 
    for (var j = 0; j < (c.length); ++i) { 
     a[j][i] = DeScrambler(c[j][i]); 
     } 
    } 
}); 

什麼好主意?

+2

涅槃的代碼?沒有什麼好方法可以隱藏您已經發送給用戶的數據。如果你真的需要這個隱藏的 - 考慮移動到服務器端。 – mishik

+0

感謝mishik快速重播。我完全瞭解這個問題。首先,我不想讓用戶直接讀取html代碼,其次是對於我不想使用PHP或數據庫的小型項目。第三,我更多地考慮編寫適用於桌面,平板電腦和手機等所有設備的代碼,並且可以通過Phonegap等服務輕鬆轉換。但他們是基於CSS,HTML和Javascript的男子氣概。而最後一個,我只想找出今天什麼樣的簡單擾人。 –

+0

「首先,我不想讓用戶直接讀取html代碼」 - 不可能。 「第三,....」 - 這有什麼關係?縮小的代碼不會以_any_方式更改腳本邏輯。 – mishik

回答

0

如果您打亂文本用戶將能夠看到正在傳輸的數據如果你只想使用JS並使其通用可能讓服務器以UTF8字節的形式發送這些數據這也不屬於加密加密和混淆是不一樣的。我提供了一個鏈接到一個github文件,它可以做基本的和數據類型的轉換。我假設你在這裏尋找類似的東西。

https://github.com/CubanAzcuy/JSBytes/blob/master/Format.js

(所有字節到UTF8的字符串操作都是因爲無符號字節) (我同意@mishik縮小(荷蘭國際集團)你的代碼是混淆的最佳途徑之一)

+0

謝謝_CubanAzcuy_。我也發現這個鏈接:[cryptii.com/text/rot13](http://cryptii.com/text/rot13)這裏顯示了一些很好的文本轉換由Javascript完成 - 它們顯示不同的轉換方式,如:** ALPHABET * *(文本,翻轉文本,HTML授權,莫爾斯電碼),** NUMERIC **(十進制,二進制,八進制,十六進制),** CIPHER **(ATBASH ROMAN,CASEAR CIPHER,ITA2/CCITT-2,PIGPEN CIPHER, ROT5,ROT13,ROT18,ROT47),**編碼**(BASE64),** HASH **(MD5,SHA1)。 我想我會選擇ROT18,但它將數字轉換爲。 –

1

如何ROT13,ROT47或者其他替代密碼?實現起來很簡單,速度很快,並且不會增加字符串的長度。

+0

我快速瀏覽了ROT13。我認爲這完全符合了什麼,我期待像: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm' 也將是不錯的選擇必須輸入不同的密碼,以獲取代碼回來。 –

0

我做了這個工作的解決方案來解決我的問題:

有這個代碼幾件事情,我想制定出更好,如果可能的。

1)在第33行我必須使用這個骯髒的把戲""+c[i][j])將數組轉換爲字符串。但是當回到問題時,我的陣列中的號碼不再是數字!這是非常快的,但如果你有更好的主意,而不失去數字定義,然後請。讓我知道。 2)我使用2版ROT13和ROT18。我找到了ROT13單行代碼版本:s.replace(/[a-zA-Z]/g,function(c){return String.fromCharCode((c<="Z"?90:122)>=(c=c.charCodeAt(0)+13)?c:c-26);});如何以簡單的方式向這些ROT13添加數字和-_ @字母? 3)正如你所看到的,我正在使用二維數組來存儲我的代碼。有什麼更好的建議?

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8" /> 
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script> 

<script type="text/javascript"> 

    var AscII = "[email protected]"; 
    var ROT18 = "[email protected]"; 
    var c = new Array(); 
    c[0]=new Array("Name","Home","City","Post code","Telephone","email","Web","Id","Number","xpos","ypos"); 
    c[1]=new Array("John","Street 123","1234","New York","438-1450123","[email protected]","www.demo1.com","b",59,306380,565500); 
    c[2]=new Array("Poul","Street 1234","2345","New York","450-7010123","[email protected]","www.demo2.com","i",113,308396,6354772); 
    c[3]=new Array("David","Street 12345","3456","New York","451-3111123","[email protected]","www.demo3.com","i",129,377615,581358); 

$(function() { 

    var Normal = function() { 
     var txt =""; 
     for (var i = 0; i < c.length; ++i) { 
      for (var j = 0; j < c[0].length; ++j) { 
       txt += ""+c[i][j] + ", "; 
       } 
      txt += "<br>"; 
      } 
     $("#kData").html("<b>Normal ASCII<br></b>" + txt); 
     }; 

    var Convert18 = function(Div, TxtFrom, TxtTo) { 
     var txt =""; 
     for (var i = 0; i < c.length; ++i) { 
      for (var j = 0; j < c[0].length; ++j) { 
       var ktxtX = decode((""+c[i][j]), TxtFrom, TxtTo); 
       c[i][j] = ktxtX; 
       txt += ktxtX + ", "; 
       } 
      txt += "<br>"; 
      } 
     $(Div).html("<b>ROT18 + Numbers + @-_<br></b>" + txt); 
     }; 

    var Convert13 = function(Div) { 
     var txt =""; 
     for (var i = 0; i < c.length; ++i) { 
      for (var j = 0; j < c[0].length; ++j) { 
       var ktxtX = rot13(""+c[i][j]); 
       // s.replace(/[a-zA-Z]/g,function(c){return String.fromCharCode((c<="Z"?90:122)>=(c=c.charCodeAt(0)+13)?c:c-26);}); 
       c[i][j] = ktxtX; 
       txt += ktxtX + ", "; 
       } 
      txt += "<br>"; 
      } 
     $(Div).html("<b>ROT13<br></b>" + txt); 
     }; 

    var decode = function (txt, alphabet, substitution) { 
     return txt.split("").map(function (c) { 
     if (alphabet.indexOf(c) != -1) { return substitution.charAt(alphabet.indexOf(c)); } 
      else { return c; } 
     }).join(""); 
    }; 

    function rot13(str) { 
     return str.replace(/[a-zA-Z]/g, function(c) { 
     return String.fromCharCode((c <= 'Z' ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26); 
     }); 
    } 

Normal(); 
Convert18("#kData2", AscII, ROT18); 
Convert18("#kData3", ROT18, AscII); 
Convert13("#kData4"); 
Convert13("#kData5"); 
$("#kData6").html("Finised - j:" + c[0].length + " - i:" + c.length); 

}); 

</script> 

</head> 
<body> 
    <div id="kData"></div> 
    <div id="kData2"></div> 
    <div id="kData3"></div> 
    <div id="kData4"></div> 
    <div id="kData5"></div> 
    <div id="kData6"></div> 
</body> 
</html> 

我把代碼拷貝上http://jsfiddle.net/kpsphoto/b7MaQ/