• 流程
    向后端ajax申请时进行加密,加密是通过一些规则对data加密,调用tokentest方法需要做三个事情
    1.生成时间戳 timestamp
    2.生成随机字符串 nonceStr
    3.通过CryptoJS.HmacSHA256生成加密签名 signature,密要就是nonceStr
let hash = CryptoJS.HmacSHA256(根据一定顺序从系排序后获取的data的键值组成的数据字符串, nonceStr);
let hashInBase64 = CryptoJS.enc.Hex.stringify(hash);

// 生成随机字符串function generateMixed() {var chars = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];var res = "";for(var i = 0; i < 16 ; i ++) {var id = Math.ceil(Math.random()*35);res += chars[id];}return res;}function tokentest(data){// 时间戳let timestamp =  new Date().getTime();// 随即字符串let nonceStr  = generateMixed();data.timestamp = timestamp;data.nonceStr= nonceStr;let sorted = {}; //存放排序后的对象let newstr='';// 前后端交互默认字段排序Object.keys(data).sort().forEach(item=>{sorted[item]=data[item];})// 获取排序后的属性值Object.values(sorted).forEach(item=>{newstr+=item;});// 生成aes加密签名let hash = CryptoJS.HmacSHA256(newstr, nonceStr);let hashInBase64 = CryptoJS.enc.Hex.stringify(hash);// let hashInBase64 = CryptoJS.enc.Base64.stringify(hash);// let hashInBase64 = CryptoJS.enc.Utf8.stringify(hash);// let hashInBase64 = CryptoJS.enc.Latin1.stringify(hash);data.signature = hashInBase64;return data;}function submits() {var data = {'submit':00001,'submit_s':0001001,'tel':188888888,'s_id':3,'g_id':5,// 'tel': 188888888,// 'submit': 00001,// 'submit_s': 0001001,// 'code':88889,// 'content':'我想xxx'// 'timestamp': xxx,// 'nonceStr': 'xxx',// 'signature': '43d00401cca4a588xxxxxxxxxxxxxxxxxxxxxxxxxxx',}$.ajax({url: /submit/,type: 'POST',dataType: 'json',data:tokentest(data),cache: false,timeout: 20000,error: function() {layer.msg('系统错误');},success: function(json){console.log(json,'hhh');}});}
//引入的插件文件<script src="cryptojs/core.js"></script><script src="cryptojs/hmac.js"></script><script src="cryptojs/sha256.js"></script><script src="cryptojs/hmac-sha256.js"></script><script src="cryptojs/enc-base64.js"></script>

哈希消息认证码HmacSHA256-javascript版相关推荐

  1. 【转】HMAC哈希消息认证码及算法原理

    HMAC算法原理 HMAC算法是一种基于密钥的报文完整性的验证方法 ,其安全性是建立在Hash加密算法基础上的.它要求通信双方共享密钥.约定算法.对报文进行Hash运算,形成固定长度的认证码.通信双方 ...

  2. HMAC哈希消息认证码

    收藏 137 14 hmac 编辑 HMAC是密钥相关的哈希运算消息认证码,HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出. 中文名 哈希消息认证码 外文名 Hash- ...

  3. 密码学数学基础,群,阿贝尔群,阶,双线性对,哈希函数,消息认证码概述

    目录 抽象代数基础 群 阿贝尔群(Abelian Group) 阶(Order) 循环群(Cyclic Group) 双线性对 哈希函数H 消息认证码MAC 抽象代数基础 群 定义 群(Group), ...

  4. 【学习笔记】密码学入门(2) 单向散列函数,消息认证码,数字签名,证书

    [学习笔记]密码学入门(2) 单向散列函数,消息认证码,数字签名,证书 学习笔记 2 – 混合密码系统 在密码学入门(1)中提到了基本的密码形式,对称密码和公钥密码以及混合密码系统. 这一部分将学习到 ...

  5. 浅浅学习一下消息认证码MAC(Message Authentication Code)

    1.MAC这玩意是什么? 提起这个MAC我就不得不说一下消息摘要. 什么是消息摘要? 消息摘要是把任意长度的输入揉和而产生长度固定的伪随机输出的算法.消息摘要的主要特点有: ①无论输入的消息有多长,计 ...

  6. 基于Hash的消息认证码HMAC简介及在OpenSSL中使用举例

    HMAC(Hash-based Message Authentication Code):基于Hash的消息认证码,是一种通过特别计算方式之后产生的消息认证码(MAC),使用密码散列函数,同时结合一个 ...

  7. HMAC(1)消息认证码MAC算法

    1. 定义 MAC(Message Authentication Code) 算法是以消息本身和密钥作为输入,经过一系列计算产生一个消息哈希的算法,用来保证消息的数据完整性和消息的数据源认证. 2. ...

  8. [密码学] 消息认证码构造方法

    文章目录 基于Hash函数的消息认证码 KeyedHash=Hash(Key||Message) HMAC与NMAC   HAMC   CMAC 基于分组密码的MAC DAA 主要实现方法:   ①带 ...

  9. 密码技术--消息认证码及go语言应用

    1.什么是消息认证码 消息认证码(message authorization code)是一种确认完整性并进行认证的技术,取了三个单词的首字母,简称为MAC 发送者:((原始数据) + 秘钥) * 哈 ...

最新文章

  1. Android Studio Terminal 不是内部或外部命令,也不是可运行程序或批处理文件
  2. ysql怎么处理百分数? “%”
  3. 在国外千万不要以为别人都听不懂中文
  4. Delphi 7学习开发控件
  5. 泰拉瑞亚Terraria for Mac(动作冒险游戏)
  6. 三角网导线平差实例_导线平差实例(一):简易平差
  7. linux xps文件,Master PDF:PDF和XPS文件编辑神器
  8. 中信证券java面试_中信证券面试问题分享
  9. 神器!亲自教大家一键用手机远程控制电脑,让手机秒变高配电脑!
  10. 分布式Restful SpringBoot骨架搭建
  11. 南大通用GBase8s 常用SQL语句(150)
  12. numeric比较大小 数据库_SQL数据库中Numeric(10,2)是什么意思?
  13. 【数理知识】kronecker 克罗内克积
  14. 如何禁用笔记本触摸板
  15. Janky frames 是如何计算出来的
  16. 实验:JS判断浏览器中英文版本
  17. spring中自带的缓存springcache
  18. numpy多维数组shape的理解
  19. 机器人体验营笔记(二)基础
  20. Python 在Coinbase上的应用

热门文章

  1. Spring AOP 的工作原理
  2. 前端学习记录005_canvas绘制钟表
  3. Vue3使用富文本框(wangeditor)
  4. 如何配置一个高效、漂亮、爱不释手的终端?
  5. mac使用zsh终端环境变量配置无效的解决方案
  6. 倚天屠龙记君临天下_战斗系统
  7. Android 推送-个推
  8. 浅析 Google 的云计算平台
  9. Android软件开发Log实时查看方式(无需数据线)
  10. cpp c++ 11/14/17