C++安全方向(三)3.8 HMAC算法介绍和安全分析
就是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算法介绍和安全分析相关推荐
- 【转】二维异形件排版算法介绍(三)
转自:https://bbs.huaweicloud.com/blogs/203947 [摘要] 相比于基于可行解的排样算法,重叠移除算法在改变解的状态时,允许零件之间发生重叠,然后采用分离技术消除重 ...
- 数字图像处理学习笔记(三):ORB算法(尺度不变特征变换)Oriented FAST and Rotated BRIEF
数字图像处理学习笔记(三):ORB算法(尺度不变特征变换)Oriented FAST and Rotated BRIEF 一.概述 参考:特征点匹配+特征检测方法汇总 ORB的全称是Oriented ...
- 分割文本_PSENet、PANNet、DBNet三个文本检测算法异同
点击蓝字关注我们 这三个文本检测算法都是segment base算法,通过由下而上的方式,先对text进行segment,然后再根据segment text,计算出text的instance PSEN ...
- PSENet PANNet DBNet 三个文本检测算法异同
向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程 公众号:datayx 这三个文本检测算法都是segment base算法,通过由下而上的方式,先对text进行seg ...
- 三维体数据分割算法及实现
三维体数据分割算法及实现 本文基于分裂合并分割算法,提出了两种新的分割算法:基于八叉树的分裂合并算法和基于自适应包围盒的分裂合并算法.下面将对这两种算法进行描述. 1 分裂合并法分析 区域生长法的原理 ...
- 奇妙的安全旅行之HMAC算法
hi,大家好,今天我们开始介绍消息摘要算法中的HMAC(Keyed-Hashing for Message Authentication)消息认证码算法,MAC(Message Authenticat ...
- HMAC算法安全性浅析
HMAC算法安全性浅析 HMAC,全称为"Hash Message Authentication Code",中文名"散列消息鉴别码",主要是利用哈希算法,以一 ...
- 三十七、Prim算法--求解最小生成树
一.Prim算法介绍 普利姆(Prim)算法求最小生成树,也就是在包含 n 个顶点的连通图中,找出只有(n-1)条边包含所有 n 个顶点的 连通子图,也就是所谓的极小连通子图 普利姆的算法如下: 设 ...
- 算法:三种简单排序算法
排序算法比較常见的有:冒泡排序.简单选择排序.直接插入排序:希尔排序.堆排序.归并排序和高速排序算法等. 今天先学习一下前面三种比較简单的算法.排序的相关概念: ①排序的稳定性:两个或多个元素相等.排 ...
最新文章
- linux六种进程状态,Linux操作系统中进程的七种状态
- 巴克码matlab,matlab编写巴克码
- 在域模式中控制客户端运行和禁止软件
- 颜色,形状,纹理特征
- maven工程xml文件路径问题
- linux安装pip
- Eclipse、IntelliJ IDEA、TortoiseSVN清除svn帐号
- 配置Git for windows(Git bash)登录GitHub
- 实现接口与显式实现接口的区别
- html用于信息展示的表格源码,Html表格
- bmfont使用心得
- redis 菜鸟教程
- Linux as AirPrint server
- Css3之画菱形和平行四边形
- About Redistribute
- 数据安全态势感知解决方案汇总
- nlp自然语言处理_nlp满足可持续投资
- 2017 年度十大最受欢迎的浏览器,你在用哪一款?
- 转:宁愿在真实前颤抖,也不愿在催泪弹下哭泣(今何在)
- E5 2670 V1 C1 C2版本区别