2010-12-14 25 views
6

Benim gereksinim şifreleme için C# basit şifreleme/şifre çözme yöntemleri gerekir ve bir görüntü (belki de gif/jpeg) şifresini çözmek. Basit bir şekilde veritabanında saklamak zorundayım Bir BLOB alanında ve diğer bazı programlama dillerindeki (java gibi) diğer geliştiricilerin bu görüntüyü çıkarması ve görüntülemesi gerekebilir. Çok fazla güvenliğe ihtiyaç duymaz, çünkü sadece "gizleyerek güvenlik" meselesi (hayat).Bir görüntü dosyasının şifrelenmesi için Basit Şifreleme/Şifre Çözme yöntemi

Gulp..can birisi yardım ... System.Security.Cryptography ad en

+0

sen olabilir misin şifresini? Bu rotaya gitmek istiyorsanız tek bir sütunu şifreleyebilirsiniz ... http://msdn.microsoft.com/en-us/library/ms179331(v=SQL.90).aspx –

+0

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

cevap

7

"Çok fazla güvenliğe ihtiyacınız yok" olduğundan, muhtemelen AES (Rijndael) gibi bir şeyle başarabilirsiniz. Simetrik bir anahtar kullanır ve yapmak için kolay yapmak için .NET çerçevesinde birçok yardım vardır. Yararlı bulabileceğiniz MSDN on the Rijndael class numaralı bol miktarda bilgi vardır. İşte

encrypt'in çok aşağı soyulmuş örneğidir/MS SQL 2005 veya daha kullanıyor bayt dizi (ikili içeriği) ile çalışmak için kullanılabilecek yöntemler ...

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

Bu şifreleme, resim dosyası formatını değiştirmiyor mu? – Mani

+0

@Mani Hayır öyle değil. Şifreleme bir dosyanın içeriğini karıştırır (türünden bağımsız olarak). Şifre çözme (şifrelemek için kullanılan uygun ücretsiz yöntemi ve ilişkili anahtarları kullanarak) orijinal dosya içeriğini geri yüklemek için şifreli verileri tersine çevirir, dosya tipi DEĞİL DEĞİLDİR. –

1

bak.

encrypting data ile ilgili bir makale.

Sorunuz çok genel - bağlantılı makalede, yerleşik işlevler kullanılarak şifreleme örnekleri verilmektedir.

+5

Bütün gün bakabilirim !!! – abmv

+0

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

İlgili konular