rclsilver | j'ai pas dit le contraire, mais la, y en a une, donc autant l'utiliser
donc j'ai réussi a pondre un code a partir d'une réponse sur un forum, le code fonctionne pas :s je vous le mets si jamais quelqu'un connait et saurait résoudre le pb
Code :
- #include <windows.h>
- #include <stdio.h>
- #include <wincrypt.h>
- #define BUFFER_SIZE 1024
- void error(const char *mess)
- {
- fprintf(stderr, "%s\n",mess);
- system("pause" );
- ExitProcess(EXIT_FAILURE);
- }
- int DESEncrypt(const char * texte, const char * cle, char * buffer);
- int DESDecrypt(const char * texte, const char * cle, char * buffer);
- int main()
- {
- char buffer[BUFFER_SIZE+1] = {0};
- char texte[BUFFER_SIZE+1] = "test !";
- char * cle = "25d55ad283aa400af464c76d713c07ad";
- DESEncrypt(texte, cle, (char*)&buffer);
- printf("Texte crypte : %s\n", buffer);
- strcpy(texte, buffer);
- memset(buffer, 0, BUFFER_SIZE);
- DESDecrypt(texte, cle, (char*)&buffer);
- printf("Texte decrypte : %s\n", buffer);
- system("PAUSE" );
- return 0;
- }
- int DESEncrypt(const char * texte, const char * cle, char * buffer)
- {
- HCRYPTPROV hProv = 0;
- HCRYPTHASH hHash = 0;
- HCRYPTKEY hKey = 0;
- DWORD Len_txt = (DWORD)strlen(texte);
- DWORD Len_cle = (DWORD)strlen(cle);
- DWORD ret;
- if ( !CryptAcquireContext (&hProv, NULL, NULL, PROV_RSA_FULL, 0) )
- {
- ret = GetLastError();
- if (ret != NTE_BAD_KEYSET)
- {
- error("1" );
- }
- else
- {
- if ( !CryptAcquireContext (&hProv, NULL, NULL, PROV_RSA_FULL, CRYPT_NEWKEYSET) )
- {
- error("2" );
- }
- }
- }
- if ( !CryptCreateHash (hProv, CALG_MD5, 0, 0, &hHash) )
- {
- if (hProv) CryptReleaseContext(hProv, 0);
- error("3" );
- }
- if ( !CryptHashData (hHash, (PBYTE)cle, Len_cle, 0) )
- {
- if (hHash) CryptDestroyHash(hHash);
- if (hProv) CryptReleaseContext(hProv, 0);
- error("4" );
- }
- if ( !CryptDeriveKey (hProv, CALG_DES, hHash, 0, &hKey) )
- {
- if (hHash) CryptDestroyHash(hHash);
- if (hProv) CryptReleaseContext(hProv, 0);
- error("5" );
- }
- if ( !CryptEncrypt (hKey, 0, 1, 0, buffer, &Len_txt, BUFFER_SIZE) )
- {
- if (hKey) CryptDestroyKey(hKey);
- if (hHash) CryptDestroyHash(hHash);
- if (hProv) CryptReleaseContext(hProv, 0);
- error("6" );
- }
- if (hKey) CryptDestroyKey(hKey);
- if (hHash) CryptDestroyHash(hHash);
- if (hProv) CryptReleaseContext(hProv, 0);
- return Len_txt;
- }
- int DESDecrypt(const char * texte, const char * cle, char * buffer)
- {
- HCRYPTPROV hProv = 0;
- HCRYPTHASH hHash = 0;
- HCRYPTKEY hKey = 0;
- DWORD Len_txt = (DWORD)strlen(texte);
- DWORD Len_cle = (DWORD)strlen(cle);
- DWORD ret;
- if ( !CryptAcquireContext (&hProv, NULL, NULL, PROV_RSA_FULL, 0) )
- {
- ret = GetLastError();
- if (ret != NTE_BAD_KEYSET)
- {
- error("1" );
- }
- else
- {
- if ( !CryptAcquireContext (&hProv, NULL, NULL, PROV_RSA_FULL, CRYPT_NEWKEYSET) )
- {
- error("2" );
- }
- }
- }
- if ( !CryptCreateHash (hProv, CALG_MD5, 0, 0, &hHash) )
- {
- if (hProv) CryptReleaseContext(hProv, 0);
- error("3" );
- }
- if ( !CryptHashData (hHash, (PBYTE)cle, Len_cle, 0) )
- {
- if (hHash) CryptDestroyHash(hHash);
- if (hProv) CryptReleaseContext(hProv, 0);
- error("4" );
- }
- if ( !CryptDeriveKey (hProv, CALG_DES, hHash, 0, &hKey) )
- {
- if (hHash) CryptDestroyHash(hHash);
- if (hProv) CryptReleaseContext(hProv, 0);
- error("5" );
- }
- if ( !CryptDecrypt(hKey, 0, 0, 0, buffer, &Len_txt) )
- {
- if (hKey) CryptDestroyKey(hKey);
- if (hHash) CryptDestroyHash(hHash);
- if (hProv) CryptReleaseContext(hProv, 0);
- error("6" );
- }
- if (hKey) CryptDestroyKey(hKey);
- if (hHash) CryptDestroyHash(hHash);
- if (hProv) CryptReleaseContext(hProv, 0);
- return Len_txt;
- }
|
Merci d'avance
ps voila le résultat : Code :
- Texte crypte : K■ÕR═Jþù
- Texte decrypte :
- )&►vº¦Y
- Appuyez sur une touche pour continuer...
|
(voila pourquoi je dis que le code fonctionne pas :s) |