一些簡單的JavaScript加密/解密
UTF8編碼與解碼:
function encodeUTF8(str){
var temp = "",rs = "";
for( var i=0 , len = str.length; i < len; i++ ){
temp = str.charCodeAt(i).toString(16);
rs += "\\u"+ new Array(5-temp.length).join("0") + temp;
}
return rs;
}
function decodeUTF8(str){
return str.replace(/(\\u)(\w{4}|\w{2})/gi, function($0,$1,$2){
return String.fromCharCode(parseInt($2,16));
});
}
console.log(encodeUTF8("123olp=-+*/中國"));
console.log(decodeUTF8(encodeUTF8("123olp=-+*/中國")));
結果:
\u0031\u0032\u0033\u006f\u006c\u0070\u003d\u002d\u002b\u002a\u002f\u4e2d\u56fd
123olp=-+*/中國
字串轉16進位制
//(只能是英文數字,不能是漢字等,編碼出來亂碼)
function strToHexCharCode(str) {
if(str === "")
return "";
var hexCharCode = [];
hexCharCode.push("0x");
for(var i = 0; i < str.length; i++) {
hexCharCode.push((str.charCodeAt(i)).toString(16));
}
return hexCharCode.join("");
}
console.log(strToHexCharCode("ss11*-+中國人民"));
//16進位制轉字串
function hexCharCodeToStr(hexCharCodeStr) {
var trimedStr = hexCharCodeStr.trim();
var rawStr = trimedStr.substr(0,2).toLowerCase() === "0x" ? trimedStr.substr(2) : trimedStr;
var len = rawStr.length;
if(len % 2 !== 0) {
alert("Illegal Format ASCII Code!");
return "";
}
var curCharCode;
var resultStr = [];
for(var i = 0; i < len;i = i + 2) {
curCharCode = parseInt(rawStr.substr(i, 2), 16); // ASCII Code Value
resultStr.push(String.fromCharCode(curCharCode));
}
return resultStr.join("");
}
console.log(hexCharCodeToStr(strToHexCharCode("ss11*-+中國人民")));
結果:
0x737331312a2d2b4e2d56fd4eba6c11
ss11*-+N-VýNºl
ASCII與Base64轉換
let encodedData = window.btoa("ss11*-+999"); // 編碼//ascii->base64 //(只能是英文數字,不能是漢字等,如果是漢字就報錯)
let decodedData = window.atob(encodedData); // 解碼//base64->ascii
console.log(encodedData);
console.log(decodedData);
結果:
c3MxMSotKzk5OQ==
ss11*-+999
利用escape()函式
//escape() 函式可對字串進行編碼,這樣就可以在所有的計算機上讀取該字串。
// 該方法不會對 ASCII 字母和數字進行編碼,也不會對下面這些 ASCII 標點符號進行編碼: * @ - _ + . / 。其他所有的字元都會被轉義序列替換。
//也就是說不能編碼網址等
var b=escape("中國人112ppp*-/++-`www.baidu.com");
console.log(b);
console.log(unescape(b));
結果:
%u4E2D%u56FD%u4EBA112ppp*-/++-%60www.baidu.com
中國人112ppp*-/++-`www.baidu.com
簡單的加密解密的函式
function compile(code) {
var c=String.fromCharCode(code.charCodeAt(0)+code.length);
for(var i=1;i<code.length;i++){
c+=String.fromCharCode(code.charCodeAt(i)+code.charCodeAt(i-1));
}
return(escape(c));
}
function uncompile(code) {
code=unescape(code);
var c=String.fromCharCode(code.charCodeAt(0)-code.length);
for(var i=1;i<code.length;i++){
c+=String.fromCharCode(code.charCodeAt(i)-c.charCodeAt(i-1));
}
return c;
}
console.log(compile("ji45+-*積極"));
console.log((uncompile(compile("ji45+-*積極"))));
結果:
s%D3%9Di%60XW%u7A19%uE170
ji45+-*積極
這裡是結合上面的函式例子,簡單些的一個加密函式,先用charCodeAt()
方法可返回指定位置的字元的 Unicode 編碼。這個返回值是 0 - 65535 之間的整數,將傳入的值轉為字串,然後用escape
函式進行加密。解密使用的是unescape
。然後再用String.fromCharCode(numX,numX,...,numX)
方法(可接受一個指定的 Unicode 值,然後返回一個字串。)解密。
下載連結自己的加密解密函式
相關文章
- Javascript 加密解密方法JavaScript加密解密
- javascript加密簡單介紹JavaScript加密
- Linux下實現 OpenSSL 簡單加密與解密字串Linux加密解密字串
- 一個簡單實用的 vb 加密/解密演算法 (轉)加密解密演算法
- 26.RSA加密解密在Java專案中的簡單應用加密解密Java
- JavaScript前端和Java後端的AES加密和解密JavaScript前端後端加密解密
- 簡單加密加密
- 加密解密加密解密
- "簡單"的加密簽名加密
- 一個簡單的解密程式 (轉)解密
- 簡單加密/解密方法包裝, 含encode(),decode(),md5() (轉)加密解密
- 影像的加密與解密加密解密
- PHP加密解密PHP加密解密
- js加密解密JS加密解密
- Unity 加密解密Unity加密解密
- Java加密解密Java加密解密
- Oracle ----加密解密Oracle加密解密
- AES加密解密加密解密
- AES 加密&解密加密解密
- javascript base64加密和解密例項程式碼JavaScript加密解密
- 硬碟簡單加密. (轉)硬碟加密
- Java中的加密與解密Java加密解密
- php和.net 的加密解密PHP加密解密
- JavaScript 和 PHP base64 加密解密 亂碼問題JavaScriptPHP加密解密
- php mcrypt 加密 解密PHP加密解密
- RSA加密與解密加密解密
- AES CBC 加密解密加密解密
- iOS中加密、解密iOS加密解密
- MySQL加密和解密MySql加密解密
- 線上加密/解密工具加密解密
- 文字加密:常見的密碼加密解密方法加密密碼解密
- JavaScript簡單的動畫效果JavaScript動畫
- 誰說 JavaScript 簡單的?JavaScript
- sql 簡單加密函式SQL加密函式
- 一些簡單的函式函式
- HP的一些簡單命令
- seliunx的一些簡單命令
- ITIL的一些簡單感受