为了加强项目的接口安全程度,需求如下

         var options = {
// 前端需要传送的数据加密
data: {
abc: 123,
bcd: 123,
cds: '撒旦教付货款12313',
},
// 模拟后端返回base64码
key: 'NWxCZUZ3YWlE'
}
var test = function (option) {
//定义时添加VAR表示是私有属性 内部使用
var data = option.data; // 前端传送的数据
var key = option.key; // base64
// 前端对数据做ascii码排序
var sort_ASCII = function (obj) {
if (obj == null) return '';
var arr = new Array();
var num = 0;
for (var i in obj) {
arr[num] = i;
num++;
}
var sortArr = arr.sort();
var sortObj = {};
for (var i in sortArr) {
sortObj[sortArr[i]] = obj[sortArr[i]];
}
return sortObj;
}
// 对象封装 将data转译成字符串
var changeUrl = function (obj) {
if (obj == null) return '';
var str = ""
var n = 0;
Object.keys(sort_ASCII(obj)).forEach(key => {
// if (!isNaN(obj[key])) {
// str += (n ? '&' : '') + key + '=' + obj[key];
// n++
// }
if (!/.*[\u4e00-\u9fa5]+.*$/.test(obj[key])) {
str += (n ? '&' : '') + key + '=' + obj[key];
n++
}
})
return str
}
// 字符串与位异或封装
var stringToChars = function (_s, _num) {
var _r = "";
for (var i = 0; i < _s.length; i++) {
_r += String.fromCharCode(_s.charCodeAt(i) ^ _num);
}
return _r.trim().replace(/\s/g, "");
}
// 封装内部计算方式
var remainder = function (str) {
var num = Math.pow(2, str.length % 3 + 1);
return stringToChars(changeUrl(data), num)
}
// 方法前加this表示公共方法 可以在外部访问
// 获取前后端密钥
this.getSignature = function () {
var code = stringToChars(key, 2)
var n = Math.pow(2, code.length % 3);
code = stringToChars(md5(code), n)
// md5加密前后密钥
return md5(remainder(changeUrl(data)) + code)
}
}
var t = new test(options);
// 生成最后的签名
console.log(t.getSignature());
版权声明:本文为小乐9924的原创文章,转载请附上原文出处链接及本声明。

10. Javascript 前后端数据加密的更多相关文章

  1. 前后端数据加密传输 RSA非对称加密

    任务需求:要求登陆时将密码加密之后再进行传输到后端. 经过半天查询摸索折腾,于是有了如下成果: 加密方式:RSA非对称加密.实现方式:公钥加密,私钥解密.研究进度:javascript与java端皆已 ...

  2. 前后端API交互数据加密——AES与RSA混合加密完整实例

    前言 前段时间看到一篇文章讲如何保证API调用时数据的安全性(传送门:https://blog.csdn.net/ityouknow/article/details/80603617),文中讲到利用R ...

  3. app开发中,前后端使用AES进行数据加密传输

    问题:当数据调用没有使用https加密时,app被抓包,接口暴露,此时可能导致被刷等安全问题 解决:1. 使用https传输 2. 在进行数据传输时进行手动加密(app端和后端定义统一的加密方式),这 ...

  4. Keycloak快速上手指南,只需10分钟即可接入Spring Boot/Vue前后端分离应用实现SSO单点登录

    登录及身份认证是现代web应用最基本的功能之一,对于企业内部的系统,多个系统往往希望有一套SSO服务对企业用户的登录及身份认证进行统一的管理,提升用户同时使用多个系统的体验,Keycloak正是为此种 ...

  5. JavaScript数据类型BigInt实践之id数值太大,导致前后端交互异常

    项目开发中前后端数据交互常会使用id作为主键索引,通常id数值都不大,使用number类型就可以表示处理,但对于一些分布式id或其他情况,id数值太大且超过了JS的最大处理数(Math.pow(2,  ...

  6. ABP开发框架前后端开发系列---(10)Web API调用类的简化处理

    在较早期的随笔<ABP开发框架前后端开发系列---(5)Web API调用类在Winform项目中的使用>已经介绍了Web API调用类的封装处理,虽然这些调用类我们可以使用代码生成工具快 ...

  7. 学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密

      学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密 技术标签: RSA  AES  RSA AES  混合加密  整合   前言:   为了提高安全性采用了RS ...

  8. Web系统开发构架再思考-前后端的完全分离

    前言 前后端完全分离其实一直是Web开发人员的梦想,也一直是我的梦想,遥想当年,无论是直接在代码里面输出HTML,还是在HTML里面嵌入各种代码,都不能让人感到满意.期间的痛苦和纠结,我想所有Web开 ...

  9. 前后端分离之vue2.0+webpack2 实战项目 -- webpack介绍

    webpack的一点介绍 Webpack 把任何一个文件都看成一个模块,模块间可以互相依赖(require or import),webpack 的功能是把相互依赖的文件打包在一起.webpack 本 ...

随机推荐

  1. AVX 指令详解 ,还有SSE指令

    https://blog.csdn.net/fengbingchun/article/details/23598709 本人从来不复制的,自己看!.

  2. qt需求

    1.登录框 账号密码 复杂度判断 2.监控  权限认证 (5分钟必须锁定,退回登录状态)--b/s 3.exe 嵌入exe (什么时间触发了什么消息,任何消息触发都可以,日志文件zlog,5分钟没有写 ...

  3. sql注入知识点

    需找sql注入点1\无特定目标inurl:.php?id= 2\有特定目标:inurl:.php?id= site:target.com 3\工具爬取spider,对搜索引擎和目标网站的链接进行爬取 ...

  4. 错误: 找不到或无法加载主类 com.leyou.LeyouItemApplication Process finished with exit code 1

    在IDEA的使用过程中,经常断掉服务或者重启服务,最近断掉服务重启时突然遇到了一个启动报错: 错误:找不到或无法加载主类 猜测:1,未能成功编译: 尝试:菜单--->Build--->Re ...

  5. 在 Oracle 中使用正则表达式

    Oracle使用正则表达式离不开这4个函数: 1.regexp_like 2.regexp_substr 3.regexp_instr 4.regexp_replace 看函数名称大概就能猜到有什么用 ...

  6. MySQL拓展 视图,触发器,事务,存储过程,内置函数,流程控制,索引,慢查询优化,数据库三大设计范式

    视图: 1.什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可 2.为什么要用视图 如果要频繁使用一张虚拟表,可以不用重复查询 3.如何使用视图 create view tea ...

  7. vs code中自动添加注释插件koroFileHeader

    github链接及教程: https://github.com/OBKoro1/koro1FileHeader 使用方法: 1.安装插件koroFileHeader 2.文件->首选项-> ...

  8. CF1193A Amusement Park

    洛谷 CF1193A Amusement Park 洛谷传送门 题目翻译 有一个游乐场有一个好玩的项目:一些有向滑梯可以将游客从一个景点快速.刺激地传送到另一个景点.现在,你要帮游乐场老板来规划一个造 ...

  9. spring cloud fegin传递request header

    本文链接:https://blog.csdn.net/zhongzunfa/article/details/82791903 1.概述 今天一个朋友, 遇到一个如何在使用spring cloud fe ...

  10. 【Mybatis】CDATA

    忽视内部尖括号那些东西