Produits  
  Services et Conseils  
  Fiches Technique  
  SipXTapi avec .Net  
  transformNode en .Net  
  Blowfish et le CF  
  MD5 et le CF  
  Compression HTTP et le CF  
 
 

  Fiches Technique  


Implémentation de MD5 en C# avec le Compact Framework sur PocketPC

read the English version

Programme de test
Résultat
Fonctions non implémentée
Quelques liens utiles...

Comme les classes d'encryption ne sont pas disponible sur le Compact Framework, nous avons porté le "MD5 Message-Digest Algorithm" de RSA Data Security, Inc. en C#.

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 = MD5CryptoServiceProvider.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¶

Fonctions non implémentée

Les fonctions suivantes n'ont pas été implémentée et lance une exception System.NotSupportedException()

  • public byte[] ComputeHash(Stream inputStream)
  • public int TransformBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
  • public byte[] TransformFinalBlock(byte[] inputBuffer, int inputOffset, int inputCount)

Quelques liens utiles...

RFC 1321
RFC décrivant l'algorithme du MD5
Télécharger le source
taille : 5 Ko, dernière modification : 26/12/2002
Nous contacter
Vous avez des remarques, des questions ? N'hésitez pas à nous contacter.

les informations fournies ici le sont en tant que telles, sans aucune garantie d'aucune sorte.
Copyright © FlowGroup SAS, 2002-2005