2010-12-14 6 views
6

Mon exigence est que j'ai besoin de méthodes simples de cryptage/décryptage en C# pour crypter et décrypter une image (peut-être gif/jpeg) .Simple cause que je dois stocker dans la base de données dans un champ BLOB et d'autres développeurs dans d'autres langages de programmation (comme Java) peuvent avoir besoin d'extraire et d'afficher cette image. Je n'ai pas besoin de beaucoup de sécurité car c'est juste une question de "sécurité en obscurcissant".Méthode simple de cryptage/décryptage pour crypter un fichier image

Gulp..can aider quelqu'un ...

+0

Est-ce que vous arrive d'utiliser MS SQL 2005 ou plus? Vous pouvez crypter une seule colonne si vous voulez suivre cette route ... http://msdn.microsoft.com/fr-fr/library/ms179331(v=SQL.90).aspx –

+0

non ...... ............... – abmv

Répondre

7

Puisque vous n'avez pas besoin de beaucoup de sécurité, vous pouvez probablement vous débrouiller avec quelque chose comme AES (Rijndael). Il utilise une clé symétrique et il y a beaucoup d'aide dans le framework .NET à rendre est facile à mettre en œuvre. Il y a beaucoup d'informations dans MSDN on the Rijndael class que vous pourriez trouver utile.

Voici un très dépouillé exemple de crypter/décrypter les méthodes qui peuvent être utilisées pour travailler avec des tableaux d'octets (contenu binaire) ...

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

public class RijndaelHelper 
{ 
    // Example usage: EncryptBytes(someFileBytes, "SensitivePhrase", "SodiumChloride"); 
    public static byte[] EncryptBytes(byte[] inputBytes, string passPhrase, string saltValue) 
    { 
     RijndaelManaged RijndaelCipher = new RijndaelManaged(); 

     RijndaelCipher.Mode = CipherMode.CBC; 
     byte[] salt = Encoding.ASCII.GetBytes(saltValue); 
     PasswordDeriveBytes password = new PasswordDeriveBytes(passPhrase, salt, "SHA1", 2); 

     ICryptoTransform Encryptor = RijndaelCipher.CreateEncryptor(password.GetBytes(32), password.GetBytes(16)); 

     MemoryStream memoryStream = new MemoryStream(); 
     CryptoStream cryptoStream = new CryptoStream(memoryStream, Encryptor, CryptoStreamMode.Write); 
     cryptoStream.Write(inputBytes, 0, inputBytes.Length); 
     cryptoStream.FlushFinalBlock(); 
     byte[] CipherBytes = memoryStream.ToArray(); 

     memoryStream.Close(); 
     cryptoStream.Close(); 

     return CipherBytes; 
    } 

    // Example usage: DecryptBytes(encryptedBytes, "SensitivePhrase", "SodiumChloride"); 
    public static byte[] DecryptBytes(byte[] encryptedBytes, string passPhrase, string saltValue) 
    { 
     RijndaelManaged RijndaelCipher = new RijndaelManaged(); 

     RijndaelCipher.Mode = CipherMode.CBC; 
     byte[] salt = Encoding.ASCII.GetBytes(saltValue); 
     PasswordDeriveBytes password = new PasswordDeriveBytes(passPhrase, salt, "SHA1", 2); 

     ICryptoTransform Decryptor = RijndaelCipher.CreateDecryptor(password.GetBytes(32), password.GetBytes(16)); 

     MemoryStream memoryStream = new MemoryStream(encryptedBytes); 
     CryptoStream cryptoStream = new CryptoStream(memoryStream, Decryptor, CryptoStreamMode.Read); 
     byte[] plainBytes = new byte[encryptedBytes.Length]; 

     int DecryptedCount = cryptoStream.Read(plainBytes, 0, plainBytes.Length); 

     memoryStream.Close(); 
     cryptoStream.Close(); 

     return plainBytes; 
    } 
} 
+0

Ce chiffrement ne modifie-t-il pas le format du fichier image? – Mani

+0

@Mani Non, ce n'est pas le cas. Le cryptage brouille le contenu d'un fichier (quel que soit son type). Le déchiffrement (à l'aide de la méthode complémentaire appropriée utilisée pour crypter et des clés associées) inverse simplement les données cryptées pour restaurer le contenu du fichier d'origine, le type de fichier n'est PAS modifié. –

1

Regardez l'espace de noms System.Security.Cryptography. Voici un article sur encrypting data.

Votre question est très générale - l'article lié vous donne des exemples de chiffrement en utilisant les fonctions intégrées.

+5

Je peux le regarder toute la journée !!! – abmv

+0

@abmv - http://msdn.microsoft.com/en-us/library/as0w18af.aspx – Oded

Questions connexes