2010-12-14 18 views
6

Il mio requisito è che ho bisogno di semplici metodi di crittografia/decrittografia in C# per crittografare e decrittografare un'immagine (forse gif/jpeg). Semplicemente devo archiviarlo nel database in un campo BLOB e alcuni altri sviluppatori in qualche altro linguaggio di programmazione (come java) potrebbero aver bisogno di estrarre e visualizzare questa immagine. Non ho bisogno di molta sicurezza perché è solo una questione di "sicurezza oscurando" (la vita).Metodo di crittografia/decrittografia semplice per crittografare un file immagine

Gulp..can qualcuno aiuto ...

+0

Sarebbe vi capita di essere utilizzando MS SQL 2005 o superiore? È possibile crittografare una singola colonna se si desidera seguire tale percorso ... http://msdn.microsoft.com/en-us/library/ms179331(v=SQL.90).aspx –

+0

no ...... ............... – abmv

risposta

7

Dal momento che "non hai bisogno di molta sicurezza" puoi probabilmente riuscire a cavartela con qualcosa come AES (Rijndael). Usa una chiave simmetrica e c'è molto aiuto nel framework .NET per renderlo facile da implementare. Ci sono molte informazioni in MSDN on the Rijndael class che potresti trovare utili.

Ecco un esempio molto ridotta cifrare/decifrare i metodi che possono essere utilizzati per lavorare con array di byte (contenuti binari) ...

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

Questa crittografia non modifica il formato del file immagine? – Mani

+0

@Mani No non è così. La crittografia rimescola il contenuto di un file (indipendentemente dal suo tipo). La decrittografia (utilizzando il metodo complementare appropriato utilizzato per crittografare e le chiavi associate) inverte semplicemente i dati crittografati per ripristinare il contenuto del file originale, il tipo di file NON viene modificato. –

1

sguardo al System.Security.Cryptography namespace.

Questo è un articolo su encrypting data.

La tua domanda è molto generale - l'articolo collegato ti offre esempi di crittografia utilizzando le funzioni integrate.

+5

Posso guardarlo tutto il giorno !!! – abmv

+0

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

Problemi correlati