小编Mik*_*ard的帖子

C++中的HMAC SHA256(DynamoDB)

我正在尝试通过REST Web API连接到DynamoDB,它要求我使用HMAC-SHA256生成签名.我有SHA-256工作,但我似乎无法让HMAC工作,这里是C++代码(使用OpenSSL)

string hmac(string key, string msg)
{
    unsigned char hash[32];

    HMAC_CTX hmac;
    HMAC_CTX_init(&hmac);
    HMAC_Init_ex(&hmac, &key[0], key.length(), EVP_sha256(), NULL);
    HMAC_Update(&hmac, (unsigned char*) &msg[0], msg.length());
    unsigned int len = 32;
    HMAC_Final(&hmac, hash, &len);
    HMAC_CTX_cleanup(&hmac);

    stringstream ss;
    for (int i = 0; i < len; i++)
    {   
        ss << hex  <<  ( unsigned int )hash[i];
    }

    return ss.str();
}
Run Code Online (Sandbox Code Playgroud)

这是对hmac的调用

    /*********************************************CALCULATE SIGNATURE****************************************************************/

string AWS4 = "AWS4" + secretKey;

string Kdate = hmac(AWS4.data(), dateStamp);
string Kregion = hmac(Kdate.data(), region);
string Kservice = …
Run Code Online (Sandbox Code Playgroud)

c++ openssl hmac amazon-web-services amazon-dynamodb

3
推荐指数
1
解决办法
5728
查看次数