C语言实现EAPOL-KEY计算MIC
EAPOL-KEY MIC计算的C语言实现如下:
```c
// EAPOL-KEY MIC 计算函数
// 参数: key: 用于计算mic的密钥,key_len: 密钥长度,data: 数据报文,data_len: 报文长度
// 返回值:mic值
unsigned char *calculate_eapol_key_mic(unsigned char *key, int key_len, unsigned char *data, int data_len) {
// 初始化变量
unsigned char *mic = (unsigned char*)malloc(16); // mic值存储位置
// HMAC-SHA1加密处理过程
// 1. 初始化HMAC上下文变量ctx
HMAC_CTX ctx; // HMAC上下文变量定义
HMAC_CTX_init(&ctx); // 初始化HMAC上下文变量
// 2. 调用HMAC函数初始化key
if (HMAC_Init(&ctx, key, key_len, EVP_sha1()) != 1) { // HMAC初始化失败时返回0 printf("Error in calculating MIC!\n"); return 0; }
// 3. 更新加密内容
if (HMAC_Update(&ctx, data, dataLen) != 1) { // 更新加密内容失败时返回0 printf("Error in calculating MIC!\n"); return 0; }
/* 4. 获得最终MIC值 */ if (HMACFinal(&ctx, mic , NULL) != 1) { /* 获得最终MIC值失败时返回0 */ printf("Error in calculating MIC!\n"); return 0; } /* 5. 销毁上下文变量 */ HMACFinal(&ctx); return mic; } ```
创作工场
免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用🔥专业版,更聪明、更完整、更原创!