2017-11-24 7 views

답변

1

다음은 등록 된 모든 다이제스트 방법을 나열합니다.

#include <openssl/evp.h> 
#include <openssl/objects.h> 
#include <stdio.h> 

void my_callback(const OBJ_NAME *obj, void *arg) 
{ 
    printf("Digest: %s\n", obj->name); 
} 

int main(int argc, char *argv) 
{ 
    void *my_arg; 
    OpenSSL_add_all_digests(); //make sure they're loaded 

    my_arg = NULL; 
    OBJ_NAME_do_all(OBJ_NAME_TYPE_MD_METH, my_callback, my_arg); 
} 

콜백은 OBJ_NAME 유형의 객체를받습니다

typedef struct obj_name_st { 
    int type; 
    int alias; 
    const char *name; 
    const char *data; 
} OBJ_NAME; 

당신은 EVP_get_digestbyname()를 통해 관련 EVP_MD*를 찾아 볼 수 있습니다. 이 방법은 원하지 않는 것들이 많이 있습니다.

$ ./a.out 
Digest: ripemd160WithRSA 
Digest: ssl2-md5 
Digest: sha384 
Digest: sha224 
Digest: SHA224 
Digest: md4 
Digest: sha512 
Digest: RSA-SHA256 
Digest: DSA-SHA 
Digest: sha1WithRSAEncryption 
Digest: MD5 
Digest: MD4 
Digest: ssl3-sha1 
Digest: ripemd160 
Digest: sha 
Digest: SHA384 
Digest: SHA1 
Digest: ssl3-md5 
Digest: sha256 
Digest: sha384WithRSAEncryption 
Digest: SHA512 
Digest: DSA-SHA1-old 
Digest: dsaWithSHA1 
Digest: ecdsa-with-SHA1 
Digest: whirlpool 
Digest: RSA-RIPEMD160 
Digest: rmd160 
Digest: RIPEMD160 
Digest: RSA-SHA1-2 
Digest: RSA-SHA1 
Digest: dsaWithSHA 
Digest: md5WithRSAEncryption 
Digest: DSS1 
Digest: RSA-MD5 
Digest: dsaEncryption 
Digest: ripemd 
Digest: md4WithRSAEncryption 
Digest: DSA 
Digest: sha512WithRSAEncryption 
Digest: SHA 
Digest: dss1 
Digest: RSA-SHA224 
Digest: RSA-SHA512 
Digest: SHA256 
Digest: md5 
Digest: RSA-SHA384 
Digest: sha1 
Digest: sha224WithRSAEncryption 
Digest: RSA-SHA 
Digest: shaWithRSAEncryption 
Digest: sha256WithRSAEncryption 
Digest: DSA-SHA1 
Digest: RSA-MD4