c++ - 在 C++ 中使用 key 生成 HMAC SHA256 哈希

标签 c++ sha256 hmac

我正在寻找一些函数或方法来使用 key 在 C++ 中返回 HMAC SHA256 哈希。我看过 Crypto++ 和 OpenSSL 的文档,但它不接受用于计算的额外 key 参数。有人可以通过提供一些信息、代码片段或链接来帮助我。

最佳答案

您可以使用 POCO library

示例代码:

class SHA256Engine : public Poco::Crypto::DigestEngine
{
public:
    enum
    {
        BLOCK_SIZE = 64,
        DIGEST_SIZE = 32
    };

    SHA256Engine()
            : DigestEngine("SHA256")
    {
    }

};


Poco::HMACEngine<SHA256Engine> hmac{secretKey};
hmac.update(string);

std::cout << "HMACE hex:" << Poco::DigestEngine::digestToHex(hmac.digest()) << std::endl;// lookout difest() calls reset ;)

使用 cmake 安装与 POCO 集成的示例:

mkdir build_poco/
cd build_poco/ && cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=./install ../poco/

CMakeLists.txt

CMAKE_MINIMUM_REQUIRED(VERSION 3.8)
PROJECT(SamplePoco)

SET(CMAKE_CXX_STANDARD 14)

SET(SOURCE_FILES
        src/main.cpp
        )

SET(_IMPORT_PREFIX lib/build_poco/install)

INCLUDE(lib/build_poco/install/lib/cmake/Poco/PocoFoundationTargets.cmake)
INCLUDE(lib/build_poco/install/lib/cmake/Poco/PocoNetTargets.cmake)
INCLUDE(lib/build_poco/install/lib/cmake/Poco/PocoJSONTargets.cmake)
INCLUDE(lib/build_poco/install/lib/cmake/Poco/PocoXMLTargets.cmake)
INCLUDE(lib/build_poco/install/lib/cmake/Poco/PocoCryptoTargets.cmake)
INCLUDE(lib/build_poco/install/lib/cmake/Poco/PocoUtilTargets.cmake)
INCLUDE(lib/build_poco/install/lib/cmake/Poco/PocoNetSSLTargets.cmake)


ADD_EXECUTABLE(SamplePoco ${SOURCE_FILES})
TARGET_LINK_LIBRARIES(SamplePoco
        Poco::Foundation
        Poco::Crypto
        Poco::Util
        Poco::JSON
        Poco::NetSSL
        )
TARGET_INCLUDE_DIRECTORIES(SamplePoco PUBLIC src/)

此处使用的示例实现:https://github.com/gelldur/abucoins-api-cpp

关于c++ - 在 C++ 中使用 key 生成 HMAC SHA256 哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37737857/

相关文章:

c++ - 为什么我的变量会根据它的引用而变化,而不是相反?

c++ - 从接口(interface)派生的模板 - 多态性停止工作?

c++ - 返回一个只能移动的右值引用

Java 安全 - 使用公钥的 X509 证书验证

c++ - Qt, "Paint"中的resizeEvent

php - 未定义函数 sha256()

java - 使用 SHA-256 获取字符串后结果错误

javascript - 如何在Jmeter中加载外部js库?

javascript - 将散列数据作为散列的 key 传递再次返回不正确的结果

c - 创建 HMAC 签名时出现问题