程序如下:
#include <stdio.h>
#include <openssl/evp.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
main(int argc, char *argv[])
{
EVP_MD_CTX *mdctx;
const EVP_MD *md;
//char mess1[] = "1375844009\n";
unsigned char md_value[EVP_MAX_MD_SIZE];
int md_len, i;
int num;
int flag;
unsigned char mess1[65536];
char d1[65536];
char dgst[]={'c','f','4'};
srand((int) time(0));
num=rand();
printf("test0 num is '%d'\n",num);
sprintf(mess1,"%d",num);
printf("test0 mess1 is '%s'\n",mess1);
OpenSSL_add_all_digests();
if(!argv[1]) {
printf("Usage: mdtest digestname\n");
exit(1);
}//end if
md = EVP_get_digestbyname(argv[1]);
if(!md) {
printf("Unknown message digest %s\n", argv[1]);
exit(1);
}//end if
mdctx = EVP_MD_CTX_create();
EVP_DigestInit_ex(mdctx, md, NULL);
EVP_DigestUpdate(mdctx, mess1, strlen(mess1));
EVP_DigestFinal_ex(mdctx, md_value, &md_len);
EVP_MD_CTX_destroy(mdctx);
printf("Digest is: ");
for(i = 0; i < md_len; i++){
printf("%02x", md_value[i]);
}
printf("\n");
sprintf(d1,"%d",md_value);
flag=strncmp(dgst,md_value[0],3);
}//end main