例如有以下文档:
"EVP_DigestFinal_ex()从ctx检索摘要值,并将其放在md中。如果s参数不为空,则写入的数据字节数(即摘要的长度)将写入整数s,最多写入EVP_MAX_MD_SIZE字节。“
签名:
int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s);是否存在摘要长度大于摘要的输出大小但小于EVP_MAX_MD_SIZE的情况。也就是说,对于SHA-1摘要,我得到一个大于20字节的输出?
发布于 2015-08-26 10:53:44
来自OpenSSL crypto/evp/digest.c的相关源代码
OPENSSL_assert(ctx->digest->md_size <= EVP_MAX_MD_SIZE);
ret = ctx->digest->final(ctx, md);
if (size != NULL)
*size = ctx->digest->md_size;其中大小是您想要的输出摘要大小,摘要是一个const结构,在SHA1的情况下,它是在sha1.c中定义的。
static const EVP_MD sha1_md = {
NID_sha1,
NID_sha1WithRSAEncryption,
SHA_DIGEST_LENGTHmd_size是这个结构的第三个成员,所以总是SHA_DIGEST_LENGTH,它是等于 20。
https://stackoverflow.com/questions/32206442
复制相似问题