Cryptage

Contenu du snippet

Les fonctions de crytage de .Net sont tellement puissantes qu'elles en sont compliquées à utiliser simplement.
Voici une fonction d'encyptage et de une fonction décryptage simples à utiliser s'appuyant sur l'algo DES, mais qui peuvent facilement être modifier pour intégrer tripleDes,...
Rien d'exceptionnel, mais celà peut toujours aider.

Source / Exemple :


using System;
using System.Collections.Generic;
using System.Security.Cryptography;
using System.IO;
using System.Text;

namespace RMTools
{
  public static class Cryptage
  {
    public static void EncryptFile(string _sInFileName, string _sOutFileName, string sKey)
    {
      DES des = new DESCryptoServiceProvider(); //Vous pouvez changer service provider
      byte[] bs = new byte[8];
      for (int i = 0; i < des.Key.Length && i<sKey.Length; i++)
			{
        bs[i] = Convert.ToByte(sKey[i]);
			}
      des.Key = bs;
      des.IV = new byte[] { 1, 6, 10, 4, 2, 6, 7, 8 }; //Peut-être modifier

      FileStream fin = new FileStream(_sInFileName, FileMode.Open, FileAccess.Read);
      FileStream fout = new FileStream(_sOutFileName, FileMode.OpenOrCreate, FileAccess.Write);
      fout.SetLength(0);

      //Create variables to help with read and write.
      byte[] bin = new byte[100]; 
      long rdlen = 0;              
      long totlen = fin.Length;    
      int len;                     
      CryptoStream encStream = new CryptoStream(fout, des.CreateEncryptor(), CryptoStreamMode.Write);
      while (rdlen < totlen)
      {
        len = fin.Read(bin, 0, 100);
        encStream.Write(bin, 0, len);
        rdlen = rdlen + len;
      }
      encStream.Close();
      fout.Close();
      fin.Close();
    }

    public static bool DecryptFile(string _sInFileName, string _sOutFileName, string sKey)
    {
      DES des = new DESCryptoServiceProvider();

      byte[] bs = new byte[8];
      for (int i = 0; i < des.Key.Length && i < sKey.Length; i++)
      {
        bs[i] = Convert.ToByte(sKey[i]);
      }
      des.Key = bs;
      des.IV = new byte[] { 1, 6, 10, 4, 2, 6, 7, 8 }; 
      FileStream fin = new FileStream(_sInFileName, FileMode.Open, FileAccess.Read);
      FileStream fout = new FileStream(_sOutFileName, FileMode.OpenOrCreate, FileAccess.Write);
      fout.SetLength(0);

   
      byte[] bin = new byte[100]; 
      long rdlen = 0;              
      long totlen = fin.Length;    
      int len;                     

      CryptoStream encStream = new CryptoStream(fout, des.CreateDecryptor(), CryptoStreamMode.Write);

      while (rdlen < totlen)
      {
        len = fin.Read(bin, 0, 100);
        encStream.Write(bin, 0, len);
        rdlen = rdlen + len;
      }
      try
      {
        encStream.Close();
        fout.Close();
        fin.Close();
        return true;
      }
      catch
      {
        fout.Close();
        fin.Close();
        return false;
      }
      
      
    }
  }
}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.