就是A发送一个消息给B,我们如何确定这个消息是A发送的。这个就需要用到这节的知识,需要共享一个密钥。
注意:HMAC应用的算法不一定是一致的,可以是SHA1,也可以是SHA2等。

代码如下

#define TESTA_KEY "123456"
#define HASH_SIZE 32
string GetHMAC1()
{unsigned char data[1024] = "MAC1";int data_size = strlen(data);   //准备好的测试数据unsigned char mac[1024] = {0};unsigned char mac_size = 0;unsigned char key[];HMAC(EVP_sha256(),    //选用的hash算法   key,strlen(ke),                 //共享密钥data,data_size,               //msgmac,&mac_size             //mac消息认证吗);string msg(mac + mac_size);msg.append(data,data+data_size);return msg;
}void TestHMAC()
{unsigned char out[1024];unsigned int out_size = 0;string GetHMAC1();const char *data = msg1.data()+32;int data_size = msg1.size()-32;string hmac(msg1.begin(),msg1.begin()+HASH_SIZE);int data_size = msg1.size()-HASH_SIZE;   //去掉头部//收到的消息认证码string    hmac(msg1.begin(),msg1.begin()+HASH_SIZE);//验证消息完整和认证HMAC(EVP_sha256(),TESTA_key,strlen(TESTA_KEY)(unsigned char *)data,data_size);//服务端生成的消息认证吗string smac(out,out+out_size);if(hmac == smac){cout<<"success"<<endl;} else{cout <<"has changed"<<endl;}
}

C++安全方向(三)3.8 HMAC算法介绍和安全分析相关推荐

  1. 【转】二维异形件排版算法介绍(三)

    转自:https://bbs.huaweicloud.com/blogs/203947 [摘要] 相比于基于可行解的排样算法,重叠移除算法在改变解的状态时,允许零件之间发生重叠,然后采用分离技术消除重 ...

  2. 数字图像处理学习笔记(三):ORB算法(尺度不变特征变换)Oriented FAST and Rotated BRIEF

    数字图像处理学习笔记(三):ORB算法(尺度不变特征变换)Oriented FAST and Rotated BRIEF 一.概述 参考:特征点匹配+特征检测方法汇总 ORB的全称是Oriented ...

  3. 分割文本_PSENet、PANNet、DBNet三个文本检测算法异同

    点击蓝字关注我们 这三个文本检测算法都是segment base算法,通过由下而上的方式,先对text进行segment,然后再根据segment text,计算出text的instance PSEN ...

  4. PSENet PANNet DBNet 三个文本检测算法异同

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx 这三个文本检测算法都是segment base算法,通过由下而上的方式,先对text进行seg ...

  5. 三维体数据分割算法及实现

    三维体数据分割算法及实现 本文基于分裂合并分割算法,提出了两种新的分割算法:基于八叉树的分裂合并算法和基于自适应包围盒的分裂合并算法.下面将对这两种算法进行描述. 1 分裂合并法分析 区域生长法的原理 ...

  6. 奇妙的安全旅行之HMAC算法

    hi,大家好,今天我们开始介绍消息摘要算法中的HMAC(Keyed-Hashing for Message Authentication)消息认证码算法,MAC(Message Authenticat ...

  7. HMAC算法安全性浅析

    HMAC算法安全性浅析 HMAC,全称为"Hash Message Authentication Code",中文名"散列消息鉴别码",主要是利用哈希算法,以一 ...

  8. 三十七、Prim算法--求解最小生成树

    一.Prim算法介绍 普利姆(Prim)算法求最小生成树,也就是在包含 n 个顶点的连通图中,找出只有(n-1)条边包含所有 n 个顶点的 连通子图,也就是所谓的极小连通子图 普利姆的算法如下: 设 ...

  9. 算法:三种简单排序算法

    排序算法比較常见的有:冒泡排序.简单选择排序.直接插入排序:希尔排序.堆排序.归并排序和高速排序算法等. 今天先学习一下前面三种比較简单的算法.排序的相关概念: ①排序的稳定性:两个或多个元素相等.排 ...

最新文章

  1. linux六种进程状态,Linux操作系统中进程的七种状态
  2. 巴克码matlab,matlab编写巴克码
  3. 在域模式中控制客户端运行和禁止软件
  4. 颜色,形状,纹理特征
  5. maven工程xml文件路径问题
  6. linux安装pip
  7. Eclipse、IntelliJ IDEA、TortoiseSVN清除svn帐号
  8. 配置Git for windows(Git bash)登录GitHub
  9. 实现接口与显式实现接口的区别
  10. html用于信息展示的表格源码,Html表格
  11. bmfont使用心得
  12. redis 菜鸟教程
  13. Linux as AirPrint server
  14. Css3之画菱形和平行四边形
  15. About Redistribute
  16. 数据安全态势感知解决方案汇总
  17. nlp自然语言处理_nlp满足可持续投资
  18. 2017 年度十大最受欢迎的浏览器,你在用哪一款?
  19. 转:宁愿在真实前颤抖,也不愿在催泪弹下哭泣(今何在)
  20. E5 2670 V1 C1 C2版本区别

热门文章

  1. 当中秋遇上国庆,你造企业发放的中秋好礼却要缴个税吗?
  2. Git 提交模板 Commit Template
  3. 如何在PCB设计中加强防干扰能力
  4. CentOS挂载新硬盘
  5. FAT32系统中长文件名的存储
  6. DNS那些事——从浏览器输入域名开始分析DNS解析过程
  7. Spring Boot面试杀手锏————自动配置原理
  8. 小程序不能上划 下滑
  9. STM32驱动AS5600磁性旋转位置传感器模块
  10. Springboot测试过程中遇到的404 not found