Convertion c en vb.net

dsigmoun Messages postés 135 Date d'inscription jeudi 31 juillet 2008 Statut Membre Dernière intervention 25 février 2023 - 10 mai 2010 à 18:58
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 16 mai 2010 à 16:33
Bonjour,

J'essai d'établir un lien avec un modem NB4. Les API ont été ouverte. Certaines manipulation demande une authentification avec un hashage.

Le calcul du hash est mis à disposition à cet adresse en C dont je ne connais absolument rien.
http://dev.efixo.net/wiki/Example/HashC

J'ai essayé des convertisseurs, mais à chaque fois la conversion d'abouti pas.

Est-ce que quelqu'un s'y connait dans les 2 languages et pourrait m'en faire la conversion ?

int crypto_hmac_sha256_hash(char *key, char *msg, char **result)

{

Hmac hmac;

byte digest[SHA256_DIGEST_SIZE]; /* SHA256_DIGEST_SIZE = 32 */

int i;



if(msg == NULL)

{

return -1;

}



*result = calloc(1, SHA256_DIGEST_SIZE * 2 + 1);



if (*result == NULL)

{

return -1;

}



HmacSetKey(&hmac, SHA256, (byte *) key, strlen(key));

HmacUpdate(&hmac, (byte *) msg, strlen(msg));

HmacFinal(&hmac, digest);



for (i = 0; i < SHA256_DIGEST_SIZE; i++)

{

snprintf((*result) + 2 * i, 3,

"%02x", (unsigned char) digest[i]);

}



return 0;

}



int crypto_sha256_hash(char *msg, char **result)

{

Sha256 sha256;

byte digest[SHA256_DIGEST_SIZE]; /* SHA256_DIGEST_SIZE = 32 */

int i;



if (msg == NULL)

{

return -1;

}



*result = calloc(1, SHA256_DIGEST_SIZE * 2 + 1);



if (*result == NULL)

{

return -1;

}



InitSha256(&sha256);

Sha256Update(&sha256, (byte *) msg, strlen(msg));

Sha256Final(&sha256, digest);



for (i = 0; i < SHA256_DIGEST_SIZE; i++)

{

snprintf((*result) + 2 * i, 3,

"%02x", (unsigned char) digest[i]);

}



return 0;

}



int main(int argc, char **argv)

{

char* value_prehash NULL, *value_hashed NULL;

int ret = 0;



if(argc != 3)

{

fprintf(stderr,

"Usage: %s <token> <value to hash>\n", argv[0]);

return 1;

}



if(crypto_sha256_hash(argv[2], &value_prehash) != 0)

{

fprintf(stderr, "crypto_sha256_hash failed !\n");

ret = 1;

goto clean;

}



if(crypto_hmac_sha256_hash(argv[1],

value_prehash,

&value_hashed) != 0)

{

fprintf(stderr, "crypto_hmac_sha256_hash failed !\n");

ret = 1;

goto clean;

}



printf("hash = %s\n", value_hashed);



clean:

free(value_prehash);

free(value_hashed);



return ret;

}

3 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
10 mai 2010 à 19:17
Salut,

Utilises les hash de la librairie .net
plus optimisé car les opérations sont peut etre en assembleur derriere

http://msdn.microsoft.com/fr-fr/library/tessz10c%28v=VS.100%29.aspx

Bon dev
0
dsigmoun Messages postés 135 Date d'inscription jeudi 31 juillet 2008 Statut Membre Dernière intervention 25 février 2023 2
16 mai 2010 à 15:49
merci c'est bon pour le calcul du sha256.

Dim hashdulogin() As Byte = Nothing
hashdulogin = sha256.ComputeHash(System.Text.Encoding.UTF8.GetBytes(login))
sha256.Clear()
For i As Integer = 0 To hashdulogin.Length - 1
login_hash = login_hash & (hashdulogin(i).ToString("x2".ToLower))
Next


Par contre, je ne comprends pas le fonctionnement du hmac256 avec une clé.

J'ai trouvé des exemples mais je ne les comprends pas.

Quelqu'un pourrait-il m'éguiller ?

Merci par avance,
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
16 mai 2010 à 16:33
0
Rejoignez-nous