Articles technique
Implémentation de MD5 en C# avec le Compact Framework sur PocketPC
Utilisation des classes MD5 et MD5CryptoServiceProvider |
Programme de test |
Résultat |
Quelques liens utiles... |
Historique de révisions... |
Comme les classes d'encryption ne sont pas disponible sur le Compact Framework 1.0, nous avons porté le "MD5 Message-Digest Algorithm" de RSA Data Security, Inc. en C#.
Ces classes sont supportées par le Compact Framework 2.0
Utilisation des classes MD5 et MD5CryptoServiceProvider
Avec le .Net Framework, on calcule le MD5 d'un buffer de la façon suivante :
using System;
using System.Text;
using System.Security.Cryptography;
...
byte[] ComputeMD5(byte[] buffer)
{
//Create the md5 hash provider.
MD5 md = new MD5CryptoServiceProvider();
//Compute the hash value from the array of bytes.
return md.ComputeHash(buffer);
}
...
Nous avons implémenté ces deux classes pour le compact framework en tachant de respecter leur signature. Ainsi, on peut utiliser le même code simplement en changeant de using.
using System;
using System.Text;
//using System.Security.Cryptography;
using FlowGroup.Crypto;
...
byte[] ComputeMD5(byte[] buffer)
{
//Create the md5 hash provider.
MD5 md = new MD5CryptoServiceProvider();
//Compute the hash value from the array of bytes.
return md.ComputeHash(buffer);
}
...
Programme de test
Comme le code de l'implémentation est disponible en téléchargement ici, nous présentons à titre d'exmple d'utilisation le code de test de la RFC 1321.
using System;
using System.Text;
using FlowGroup.Crypto;
namespace DemoMD5
{
/// <summary>
/// Summary description for Application.
/// </summary>
class Application
{
static private void MDString(string s)
{
MD5 md = MD5.Create();
byte[] hash;
//Create a new instance of ASCIIEncoding to
//convert the string into an array of Unicode bytes.
ASCIIEncoding enc = new ASCIIEncoding();
//Convert the string into an array of bytes.
byte[] buffer = enc.GetBytes(s);
//Create the hash value from the array of bytes.
hash = md.ComputeHash(buffer);
//Display the hash value to the console.
Console.Write("MD5 (\"{0}\") = ", s);
foreach(byte b in hash)
{
Console.Write(b.ToString("x2"));
}
Console.WriteLine("");
}
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
Console.WriteLine("MD5 test suite:");
MDString("");
MDString("a");
MDString("abc");
MDString("message digest");
MDString("abcdefghijklmnopqrstuvwxyz");
MDString("ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "abcdefghijklmnopqrstuvwxyz"
+ "0123456789");
MDString("123456789012345678901234567890"
+ "123456789012345678901234567890"
+ "12345678901234567890");
}
}
}
Résultat
En exécutant le programme, nous obtenons la sortie suivante, conforme à la RFC 1321 :
MD5 test suite:¶ MD5 ("") = d41d8cd98f00b204e9800998ecf8427e¶ MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661¶ MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72¶ MD5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0¶ MD5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b¶ MD5 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = d174ab98d277d9f5a5611c2c9f419d9f¶ MD5 ("123456789012345678901234567890123456789012345678901234567890123456 78901234567890") = 57edf4a22be3c955ac49da2e2107b67a¶
Quelques liens utiles...
RFC 1321 RFC décrivant l'algorithme du MD5 | |
Télécharger le code source du md5 taille 4 Ko, dernière modification 06/08/2013 | |
Télécharger la solution au format Visual Studio 2003 taille 8 Ko, dernière modification 06/08/2013 | |
Nous contacter Vous avez des remarques, des questions ? N'hésitez pas à nous contacter. |
Historique de révisions...
date | révision |
---|---|
29/12/2005 00:00 | Ajout de l'implémentation des méthodes :
|