一些簡單的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加密解密
- Linux下實現 OpenSSL 簡單加密與解密字串Linux加密解密字串
- 26.RSA加密解密在Java專案中的簡單應用加密解密Java
- JavaScript前端和Java後端的AES加密和解密JavaScript前端後端加密解密
- 簡單加密加密
- 加密解密加密解密
- "簡單"的加密簽名加密
- 影像的加密與解密加密解密
- PHP加密解密PHP加密解密
- js加密解密JS加密解密
- AES加密解密加密解密
- AES 加密&解密加密解密
- JavaScript 和 PHP base64 加密解密 亂碼問題JavaScriptPHP加密解密
- php mcrypt 加密 解密PHP加密解密
- AES CBC 加密解密加密解密
- RSA加密與解密加密解密
- 文字加密:常見的密碼加密解密方法加密密碼解密
- JavaScript 簡單/不簡單 (小Tips分享)JavaScript
- JavaScript簡單的動畫效果JavaScript動畫
- javascript的簡單模板替換JavaScript
- 序列密碼的加密與解密密碼加密解密
- Flutter 的加密和解密資料Flutter加密解密
- JavaScript 簡單介紹JavaScript
- 【Javascript】——簡單cookie操作JavaScriptCookie
- Java加密解密瞭解Java加密解密
- android加密解密完美教程Android加密解密
- 線上加密/解密工具加密解密
- JavaScript之遞迴的簡單使用JavaScript遞迴
- 加密和解密的另個應用加密解密
- sql簡單入門的一些操作SQL
- Linux下一些操作的簡單整理Linux
- SHELL中常用的一些簡單命令
- python爬蟲簡單實現逆向JS解密Python爬蟲JS解密
- JavaScript 簡單動畫效果JavaScript動畫
- 簡單介紹克隆 JavaScriptJavaScript
- PHP Base64 加密 & 解密PHP加密解密
- php rsa長文加密解密PHP加密解密
- utf8 加密與解密加密解密