OpenSSL使用SHA256摘要生成密钥
默认情况下,当您生成OpenSSL使用SHA256摘要生成密钥,openssl,digest,Openssl,Digest,默认情况下,当您生成EVP_PKEY密钥时,它将包含SHA1摘要,这可以通过以下代码证明: int def_nid; EVP_PKEY_get_default_digest_nid(pk, &def_nid); def_nid的值为0x64(SHA1)。有没有办法将其配置为SHA256或任何其他摘要算法 有没有办法将其配置为SHA256或任何其他摘要算法 否。根据以下文件: 如果您查看实现,您将看到其硬编码且不可配置: $ grep -R EVP_PKEY_get_default_d
EVP_PKEY
密钥时,它将包含SHA1摘要,这可以通过以下代码证明:
int def_nid;
EVP_PKEY_get_default_digest_nid(pk, &def_nid);
def_nid
的值为0x64(SHA1)。有没有办法将其配置为SHA256或任何其他摘要算法
有没有办法将其配置为SHA256或任何其他摘要算法
否。根据以下文件:
如果您查看实现,您将看到其硬编码且不可配置:
$ grep -R EVP_PKEY_get_default_digest_nid *
...
crypto/evp/p_lib.c:int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid)
...
然后:
以及:
最后,从crypto/hmac/hmu-ameth.c
:
static int hmac_pkey_ctrl(EVP_PKEY *pkey, int op, long arg1, void *arg2)
{
switch (op)
{
case ASN1_PKEY_CTRL_DEFAULT_MD_NID:
*(int *)arg2 = NID_sha1;
return 1;
default:
return -2;
}
}
static int rsa_pkey_ctrl(EVP_PKEY *pkey, int op, long arg1, void *arg2)
{
X509_ALGOR *alg = NULL;
switch (op)
{
...
case ASN1_PKEY_CTRL_DEFAULT_MD_NID:
*(int *)arg2 = NID_sha1;
return 1;
...
}
并且,从crypto/rsa/rsa\u ameth.c
:
static int hmac_pkey_ctrl(EVP_PKEY *pkey, int op, long arg1, void *arg2)
{
switch (op)
{
case ASN1_PKEY_CTRL_DEFAULT_MD_NID:
*(int *)arg2 = NID_sha1;
return 1;
default:
return -2;
}
}
static int rsa_pkey_ctrl(EVP_PKEY *pkey, int op, long arg1, void *arg2)
{
X509_ALGOR *alg = NULL;
switch (op)
{
...
case ASN1_PKEY_CTRL_DEFAULT_MD_NID:
*(int *)arg2 = NID_sha1;
return 1;
...
}
static int rsa_pkey_ctrl(EVP_PKEY *pkey, int op, long arg1, void *arg2)
{
X509_ALGOR *alg = NULL;
switch (op)
{
...
case ASN1_PKEY_CTRL_DEFAULT_MD_NID:
*(int *)arg2 = NID_sha1;
return 1;
...
}