NodeJS實現(xiàn)客戶端js加密
更新時間:2017年01月09日 14:39:22 作者:highsea
本文主要介紹了NodeJS實現(xiàn)客戶端js加密的思路與方法,具有一定的參考價值,下面跟著小編一起來看下吧
思路:
- 服務(wù)端渲染業(yè)務(wù)代碼js =>
- 前后端約定加密算法 =>
- 業(yè)務(wù)代碼進(jìn)行簽名 =>
- 客戶端解密業(yè)務(wù)代碼 =>
- eval 執(zhí)行
Node 路由示例:
/**
* 請自定義 restful API 這里以 GET 為例
* @param {req}
* @param {res}
* @return {next()}
*/
//var util = require('utility');
exports.encryption = function(req, res){
//GET
var name = req.query.name
, jsStr // 用于 服務(wù)端渲染的 js 腳本
, doc = {
n : '支持請求參數(shù)',
};
// isSafe : 常規(guī)安全字符判斷
if (fun.isSafe(name)) doc['n'] = name;
/////////////////需要加密的js 業(yè)務(wù)代碼 start/////////////////////
jsStr = function(n){
alert('開始執(zhí)行業(yè)務(wù)代碼~')
// 變量 N 可以是某些 之前需要 服務(wù)端渲染的 信息
// 比如 自產(chǎn) 的 url 之類
function sayHello(s){
alert('您輸入了: '+s);
}
sayHello(n);
//
}
//////////////////需要加密的js 業(yè)務(wù)代碼 end////////////////////
jsStr = '('+jsStr.toString()+')("'+( name ? doc.n : '默認(rèn)的')+'")';
var key = util.md5('highsea90'+Date.now())
var resStr = myFromCharCode(key, jsStr);
res.render('cm/eval',{
title : 'js 加密 demo',
charCode : escape(myFromCharCode.toString()),
data : escape(resStr),
key : key
})
};
/**
* @param {m}密鑰
* @param {text}文本
* @return {last}加密文本
*/
function myFromCharCode (m, text){
var last = '';
for (var i = 0 , l = text.length; i < l; i++) {
for (var j = 0, k = m.length; j < k; j++) {
var key = m.charCodeAt(j)
, text2 = text.charCodeAt(i) ^ key
}
last += String.fromCharCode(text2);
}
return last;
}
客戶端 頁面示例:
<!DOCTYPE html>
<html>
<head>
<title><%=title%></title>
</head>
<body>
<script type="text/javascript">
// 執(zhí)行 約定的 加密算法
eval(unescape("<%=charCode%>"));
// 服務(wù)端加密后的 字符串 用約定的 算法進(jìn)行解密
var str = myFromCharCode("<%=key%>", unescape("<%=data%>"));
// 執(zhí)行業(yè)務(wù)代碼
eval(str);
</script>
</body>
</html>
代碼演示
一個小錄像:

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
您可能感興趣的文章:
- 獲取本機(jī)IP地址的實例(JavaScript / Node.js)
- nodejs獲取本機(jī)內(nèi)網(wǎng)和外網(wǎng)ip地址的實現(xiàn)代碼
- 詳解node HTTP請求客戶端 - Request
- nodejs socket服務(wù)端和客戶端簡單通信功能
- Node.js中的http請求客戶端示例(request client)
- 使用node.js 獲取客戶端信息代碼分享
- nodejs socket實現(xiàn)的服務(wù)端和客戶端功能示例
- nodejs(officegen)+vue(axios)在客戶端導(dǎo)出word文檔的方法
- nodejs簡單實現(xiàn)TCP服務(wù)器端和客戶端的聊天功能示例
- node.js中express模塊創(chuàng)建服務(wù)器和http模塊客戶端發(fā)請求
- 解決Node.js mysql客戶端不支持認(rèn)證協(xié)議引發(fā)的問題
- node獲取客戶端ip功能簡單示例
相關(guān)文章
關(guān)于npm install過程失敗的幾種處理方式
這篇文章主要介紹了關(guān)于npm install過程失敗的幾種處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06
node.js+jQuery實現(xiàn)用戶登錄注冊AJAX交互
本篇文章主要介紹了用Node.js當(dāng)作后臺、jQuery寫前臺AJAX代碼實現(xiàn)用戶登錄和注冊的功能的相關(guān)知識。具有很好的參考價值。下面跟著小編一起來看下吧2017-04-04
NPM配置私服構(gòu)建內(nèi)網(wǎng)中央倉庫過程詳解
這篇文章主要為大家介紹了NPM配置私服構(gòu)建內(nèi)網(wǎng)中央倉庫過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
Nodejs把接收圖片base64格式保存為文件存儲到服務(wù)器上
這篇文章主要介紹了Nodejs把接收圖片base64格式保存為文件存儲到服務(wù)器上,文中代碼較簡短,需要的朋友可以參考下2018-09-09
使用Fetch API執(zhí)行GraphQL查詢和變體問題
這篇文章主要介紹了使用Fetch API執(zhí)行GraphQL查詢和變體問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04

