Maison  >  Article  >  interface Web  >  NodeJS implémente le cryptage client js

NodeJS implémente le cryptage client js

高洛峰
高洛峰original
2017-01-10 09:22:471158parcourir

Idée :

Code commercial de rendu côté serveur js =>

Les algorithmes de chiffrement convenus front-end et back-end=>

Code commercial pour signature=>

Code métier de décryptage client=>

exécution d'évaluation

Exemple de routage de nœud :

/**
 * 请自定义 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 // 用于 服务端渲染的 js 脚本
 , doc = {
  n : '支持请求参数',
 };
 // isSafe : 常规安全字符判断
 if (fun.isSafe(name)) doc['n'] = name;
 /////////////////需要加密的js 业务代码 start///////////////////// 
 jsStr = function(n){
 alert('开始执行业务代码~')
 // 变量 N 可以是某些 之前需要 服务端渲染的 信息
 // 比如 自产 的 url 之类
 function sayHello(s){
  alert('您输入了: '+s);
 }
 sayHello(n);
 //
 }
 //////////////////需要加密的js 业务代码 end//////////////////// 
 jsStr = '('+jsStr.toString()+')("'+( name ? doc.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;
 }

Exemple de page client :

<!DOCTYPE html>
<html>
<head>
 <title><%=title%></title>
</head>
<body>
<script type="text/javascript">
 // 执行 约定的 加密算法
 eval(unescape("<%=charCode%>"));
 // 服务端加密后的 字符串 用约定的 算法进行解密
 var str = myFromCharCode("<%=key%>", unescape("<%=data%>"));
 // 执行业务代码
 eval(str);
</script>
</body>
</html>

Démonstration de code

Une courte vidéo :

NodeJS implémente le cryptage client js

Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article. L'article peut apporter des avantages aux études ou au travail de chacun. Pour obtenir de l'aide, j'espère également soutenir le site Web PHP chinois !

Pour plus d'articles liés à l'implémentation du chiffrement client js par NodeJS, veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn