【问题标题】:Encryption hmac result is shorter in C than C#C 中的加密 hmac 结果比 C# 短
【发布时间】:2013-01-09 22:41:10
【问题描述】:

有时您必须实现 C 代码和加密,所以我的 hmac256 或 sha2_hmac 实现的 C 代码实现存在问题:

unsigned char key[19] = { "abcdef" };
size_t keylen = 18;
unsigned char input[64] = {"123456789"}; 
size_t ilen = 63;         
unsigned char output[32];
int is224 = 0;


sha2_hmac(key, keylen, input, ilen, output, is224);

char result[64] = {};
char result2[64] = {};

for(int j = 0; j < 32; j++) {
        sprintf(result, "%X", output[j]);
        strcat(result2, result);
}

但是当我将它与 C# 代码进行比较时,结果太短了。

【问题讨论】:

  • 请贴出预期输出、实际输出和C#代码。
  • 测验问题:如果output[j] sprintf(result, "%X", output[j]); 会给出预期的结果吗?如果没有,可以对格式字符串进行什么更改来实现它?
  • 对不起不明白...结果太短了也太长了

标签: c hmac sha256


【解决方案1】:

你必须像这样调整你的 sprintf() 函数调用:

sprintf(result, "%02X", output[j]);

【讨论】:

    猜你喜欢
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2012-08-01
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多