Use EVP_MD_CTX_reset instead of free/new

This commit is contained in:
Vladimir Dubrovin 2026-05-07 18:47:06 +03:00
parent d0d3b90226
commit 46cff56cf4

View File

@ -118,7 +118,6 @@ unsigned char * mycrypt(const unsigned char *pw, const unsigned char *salt, unsi
EVP_DigestUpdate(ctx1,sp,sl); EVP_DigestUpdate(ctx1,sp,sl);
EVP_DigestUpdate(ctx1,pw,strlen((char *)pw)); EVP_DigestUpdate(ctx1,pw,strlen((char *)pw));
EVP_DigestFinal_ex(ctx1,final,&len); EVP_DigestFinal_ex(ctx1,final,&len);
EVP_MD_CTX_free(ctx1);
for(pl = (int)strlen((char *)pw); pl > 0; pl -= MD5_SIZE) for(pl = (int)strlen((char *)pw); pl > 0; pl -= MD5_SIZE)
EVP_DigestUpdate(ctx,final,pl>MD5_SIZE ? MD5_SIZE : pl); EVP_DigestUpdate(ctx,final,pl>MD5_SIZE ? MD5_SIZE : pl);
@ -142,7 +141,7 @@ unsigned char * mycrypt(const unsigned char *pw, const unsigned char *salt, unsi
* need 30 seconds to build a 1000 entry dictionary... * need 30 seconds to build a 1000 entry dictionary...
*/ */
for(i=0;i<1000;i++) { for(i=0;i<1000;i++) {
ctx1 = EVP_MD_CTX_new(); EVP_MD_CTX_reset(ctx1);
EVP_DigestInit_ex(ctx1, md5, NULL); EVP_DigestInit_ex(ctx1, md5, NULL);
if(i & 1) if(i & 1)
EVP_DigestUpdate(ctx1,pw,strlen((char *)pw)); EVP_DigestUpdate(ctx1,pw,strlen((char *)pw));
@ -160,8 +159,8 @@ unsigned char * mycrypt(const unsigned char *pw, const unsigned char *salt, unsi
else else
EVP_DigestUpdate(ctx1,pw,strlen((char *)pw)); EVP_DigestUpdate(ctx1,pw,strlen((char *)pw));
EVP_DigestFinal_ex(ctx1,final,&len); EVP_DigestFinal_ex(ctx1,final,&len);
EVP_MD_CTX_free(ctx1);
} }
EVP_MD_CTX_free(ctx1);
} }
else else
#endif #endif