使用XOR加密字符串并使用BSAFE对其进行散列(类似OpenSSL的库)

时间:2011-06-29 16:30:35

标签: c++ c arrays encryption openssl

我必须计算XOR加密字符串的SHA-2哈希值。我正在使用RSA BSafe库(非常类似于OpenSSL)。我的XOR函数看起来像这样:

for (int i = 0; i < strlen(combined); i++)
{
    encrypted[i] = (combined[i] ^ authkey[i%strlen(authkey)]);

}

这会在char数组中产生一些'\ 0'字符(NullTerminations)。在此之后,我将此加密字符串传递给我的hmac()函数。 现在的问题是,当BSafe HMAC计算字符数组上的哈希时,它不会期望'\ 0'字符介于两者之间。我该如何规避这个问题?即使在OpenSSL中给定w.r.t函数的答案,它们也会有所帮助,因为它们非常相似。

提前致谢!

1 个答案:

答案 0 :(得分:2)

使用OpenSSL,您可以显式传递长度。包含NULL的数据无关紧要。

unsigned char *HMAC(const EVP_MD *evp_md, const void *key,
              int key_len, const unsigned char *d, int n,
              unsigned char *md, unsigned int *md_len);

n 是数据的长度,由 d 指向。显然,您必须自己跟踪*d的长度,因为strlen不起作用。如果BSafe的工作方式不同,我会感到震惊。

当然,正如我的评论所说,两次使用一次性垫是非常不安全的。你几乎肯定不应该重新实现加密原语; BSafe没有提供流密码吗?