首页 > 编程语言 >chatGPT用C++写的HMAC-SHA256函数

chatGPT用C++写的HMAC-SHA256函数

时间:2023-08-15 16:12:46浏览次数:38  
标签:your unsigned hmac program chatGPT SHA256 HMAC

以下内容全为 chatGPT 生成:

#include <openssl/hmac.h>
#include <openssl/sha.h>
#include <iostream>
#include <iomanip>

std::string hmac_sha256(const std::string &key, const std::string &data) {
    unsigned char hash[SHA256_DIGEST_LENGTH];
    HMAC_CTX hmac;
    HMAC_CTX_init(&hmac);
    HMAC_Init_ex(&hmac, &key[0], key.length(), EVP_sha256(), NULL);
    HMAC_Update(&hmac, (unsigned char*)&data[0], data.length());
    unsigned int len = SHA256_DIGEST_LENGTH;
    HMAC_Final(&hmac, hash, &len);
    HMAC_CTX_cleanup(&hmac);

    std::stringstream ss;
    for(unsigned int i = 0; i < len; i++)
    {
        ss << std::hex << std::setw(2) << std::setfill('0') << (int)hash[i];
    }

    return ss.str();
}

int main() {
    std::string key = "your_key";
    std::string data = "your_data";
    std::string hash = hmac_sha256(key, data);
    std::cout << "HMAC-SHA256: " << hash << std::endl;
    return 0;
}

在这个代码片段中,hmac_sha256函数接受一个密钥和一个数据字符串,然后使用HMAC-SHA256算法计算哈希值。然后,它将哈希值转换为十六进制字符串,并返回。

注意,你需要在你的系统中安装OpenSSL库,并在编译你的程序时链接OpenSSL库。你可以使用以下命令来编译你的程序:

g++ your_program.cpp -o your_program -lcrypto

在这个命令中,your_program.cpp是你的程序的源文件,your_program是你想要生成的可执行文件的名称,-lcrypto是链接OpenSSL库的选项。

标签:your,unsigned,hmac,program,chatGPT,SHA256,HMAC
From: https://www.cnblogs.com/aquester/p/17631529.html

相关文章

  • ChatGPT帮你讲解:人为什么要活着
    ChatGPT帮你讲解:人为什么要活着人为什么要活着,这是一个复杂而深刻的问题,涉及到哲学、道德、宗教等多个领域的讨论。作为一个AI,我将尝试给出一个简洁的解释。生命的意义是一个个体主观决定的,因此不同人对这个问题的回答可能会有所不同。然而,有一些常见的理由可以解释为什么人们认为......
  • ChatGPT 问答00015 Java中如何判断字符串中含有3个以上日语字符
    要判断一个字符串中是否包含3个或更多日语字符,可以使用Java的正则表达式进行匹配,并配合计数器来统计匹配到的日语字符数量。以下是一个示例的Java代码:importjava.util.regex.*;publicclassMain{publicstaticvoidmain(String[]args){Stringstr="Hell......
  • 如何在工作中利用Prompt高效使用ChatGPT?
    导读AI不是来替代你的,是来帮助你更好工作。用betterprompt使用chatgpt,替换搜索引擎,让你了解如何在工作中利用Prompt高效使用ChatGPT。01背景现在GPT已经开启了人工智能狂潮,不过是IT圈,还是金融圈。一开始,我觉的它就是一个增强版搜索引擎,在使用了一段时间之后,才发现它......
  • 智能驾驶系列报告之一:智能驾驶 ChatGPT时刻有望来临
    原创|文BFT机器人L3功能加速落地,政策标准有望明确L2发展日益成熟,L3功能加速落地。根据市场监管总局发布的《汽车驾驶自动化分级》与SAE发布的自动驾驶分级标准,自动驾驶主要分为6个级别(0级到5级,L0到L5)。从车辆控制、目标与事件检测、任务接管等层面看,国标与SAE分级......
  • [完结8章]程序员的 AI 启蒙课,ChatGPT 辅助开发 Vue3 项目
    点击下载:程序员的AI启蒙课:ChatGPT让你1人顶3人提取码:8zwd Vue是一款用于构建用户界面的JavaScript框,它基于标准的HTML、CSS和JavaScript构建,并提供了一套声明式的、组件化的编程模型,用以帮助开发者高效地开发用户界面。目前,Vue3.0正式版也发布了两年的时间,越......
  • 一种基于ChatGPT的高效吃瓜方式的探索和研究。
    你好呀,我是歪歪。最近掌握了一个新的吃瓜方式,我觉得还行,给大家简单分享一下。事情说来就话长了,还得从最近的一次“工业革命”开始,也就是从超导材料说起。8月1日的时候B站这个视频引爆网络:随后“常温常压下的超导材料”直接霸占了各个新闻媒体的头条,引爆了话题,点燃了股市......
  • ChatGPT 问答00013 开源项目QGIS
    QGIS(全称QuantumGIS)是一个自由开源的地理信息系统(GIS)软件,它提供了一套功能强大的地图制作、空间分析和数据管理工具。以下是关于QGIS开源项目的一些信息:项目介绍:QGIS是由一个全球性社群共同开发的自由软件项目。它的目标是为用户提供一个易于使用、跨平台、功能丰富的GIS软件......
  • Dify 基于 ChatGPT 构建本地知识库问答应用
    来源:https://blog.csdn.net/qq_43692950/article/details/131345124 一、Dify自从ChatGPT横空出世之后,其极高的语言理解和交互能力不仅让人惊呼,ChatGPT不仅能够处理事实性问题,还能理解和生成情感色彩更浓厚的对话内容,能够识别用户的情感倾向,并据此作出相应的回应。这么好的......
  • ChatGPT 调教日记(二):程序员转量化的背景知识
    程序员如何学习量化金融作为一个程序员学习量化金融(quant)是一个不错的选择。以下是一些建议:学习金融基础知识:了解金融市场、投资策略和金融产品。这将帮助你理解量化金融的背景和应用场景。学习统计学和数学:量化金融依赖于统计和数学模型。掌握基本的统计学概念和数学技巧,......
  • 文心一言 VS 讯飞星火 VS chatgpt (75)-- 算法导论7.2 4题
    四、如果用go语言,银行一般会按照交易时间来记录某一账户的交易情况。但是,很多人却喜欢收到的银行对账单是按照支票号码的顺序来排列的。这是因为,人们通常都是按照支票号码的顺序来开出支票的,而商人也通常都是根据支票编号的顺序兑付支票。这一问题是将按交易时间排序的序列转换成按......