Solved MD5 encryption

Discussion forum about all things Team Developer 7.x
Adeline
France
Posts: 2
Joined: 28 Jun 2018, 09:18
Location: France

MD5 encryption

Post by Adeline » 28 Jun 2018, 12:29

Hello,

Thanks a lot for your help. I succeeded in running your example.
Unfortunately for me, using the CALG_SHA_256 the function return 0 and with CALG_SHA1 the programme run until the end but find as encrypted value:
"00000000000000000000000000000000"
I tried to understand why (I am really a beginner).

Regards,

Adeline

Edit: I succed to use both CALG_SHA1 and CALG_SHA_256 .
For inforation, to use CALG_SHA_256 it is necessary to replace PROV_Rsa_Full with PROV_RSA_AES in the CryptAcquireContextW function.

Dave Rabelink
Founder/Site Admin
Founder/Site Admin
Netherlands
Posts: 691
Joined: 24 Feb 2017, 09:12
Location: Gouda, The Netherlands

MD5 encryption

Post by Dave Rabelink » 29 Jun 2018, 07:37

Great you got it working.

Some tips on getting info on Windows API, like constant values.

First, Always check the MSDN page on the function you want to use.
In some cases, constant values are listed with their actual values.
But mostly, they are just listed without the values and you need to search further.

Second, based on the info on MSDN (having a sample in c++, C# etc) you can use Visual Studio to get the constant values.
When you do not have a licensed VS installation, you can always use a free version.
Having an IDE which contains the Windows SDK (header files, libs etc) you can easily locate the needed constant value.

Also, most of the Windows API is described in Wine, a Windows OS emulator/lib for other operating systems like Linux.
As an example, Wine implements the wincrypt library and the header file (wincrypt.h) can be inspected online:


https://github.com/wine-mirror/wine/blo ... wincrypt.h


There you can search for the value you want:

Code: Select all

1878 /* Provider Types */ 
1879 #define PROV_RSA_FULL             1 
1880 #define PROV_RSA_SIG              2 
1881 #define PROV_DSS                  3 
1882 #define PROV_FORTEZZA             4 
1883 #define PROV_MS_EXCHANGE          5 
1884 #define PROV_SSL                  6 
1885 #define PROV_RSA_SCHANNEL         12 
1886 #define PROV_DSS_DH               13 
1887 #define PROV_EC_ECDSA_SIG         14 
1888 #define PROV_EC_ECNRA_SIG         15 
1889 #define PROV_EC_ECDSA_FULL        16 
1890 #define PROV_EC_ECNRA_FULL        17 
1891 #define PROV_DH_SCHANNEL          18 
1892 #define PROV_SPYRUS_LYNKS         20 
1893 #define PROV_RNG                  21 
1894 #define PROV_INTEL_SEC            22 
1895 #define PROV_REPLACE_OWF          23 
1896 #define PROV_RSA_AES              24 

There is also a Team Developer library, named WinApi32 declarations archive.
It contains not only API constants, but a lot of API declarations for the functions themselves.
But not everything is added to the library. The wincrypt constants seem not to be listed.
It is worth a try to look into the library to find the API declarations you need.

This library is described here:


viewtopic.php?f=27&t=4
Regards,
Dave Rabelink

Image
Articles and information on Team Developer Tips & Tricks Wiki
Download samples, documents and resources from TD Sample Vault
Videos on TDWiki YouTube Channel

Return to “General Discussion”

Who is online

Users browsing this forum: [Ccbot] and 0 guests