2011-09-13 27 views
16

AES 256 şifreleme/şifre çözme işlemini kullanmam gerekiyor ve düzgün çalışan bir örnek bulamadık.C# System.Security.Cryptography.Aes kullanarak bir AES256 şifrelemesi örneği

MSDN, AES sınıfını kullanmamı önerir.

Rijndael sınıfı, Aes algoritmasının öncülüdür. Rijndael yerine Aes algoritmasını kullanmalısınız. Daha fazla bilgi için .NET Güvenlik günlüğündeki The Differences Between Rijndael and AES girişine bakın.

Herkes, AES256 için AES sınıfını kullanarak iyi bir örnek yönünde bana işaret edebilir mi?

Ben paylaşılan anahtar ve şifrelenmiş bir metin dizesini içeren bir şifre dosyası var:

biraz daha netlik ekleyin. Metnin şifresini çözmem ve sonra doğrulamam gerekiyor.

Gördüğüm tüm örnekler şifreleme/şifre çözme işlemini gerçekleştirmek için en az 2 parametre bekler.

Başlatma vektörünü ve şifre dosyasındaki metnin anahtarını bulabilir miydim?

Bu

benim şifre dosyasında tutulan metnin bir örnektir: ² † @ ƒ

EUA ± IRA; Ä; öDWnªóª ©© ¨|L

+4

hem [AesManaged] için dokümantasyon (http://msdn.microsoft.com/en-us/library/system.security.cryptography.aesmanaged .aspx) ve [AesCryptoServiceProvider] (http://msdn.microsoft.com/en-us/library/system.security.cryptography.aescryptoserviceprovider.aspx) sınıfı ayrıntılı örnekler sağlar. Örnekler beklediğiniz şekilde çalışmazsa, lütfen sorunu gösteren kısa ama eksiksiz bir program gönderin. – dtb

+0

@dtb Teşekkürler. Örneği AesManaged'de göremedim çünkü bu sadece .Net 4 için mevcut ve şu an 3.5 kullanıyorum ama örnek ileriye doğru görünüyor. – TeamWild

+0

Verileri şifrelemek için, başlangıçta şifrelenen (genellikle CBC veya ECB) şifreleme akışı modunun ne olduğunu bilmeniz gerekir. ECB'nin başlatma vektörü yok. CBC kullanılmışsa, şifrelenmiş verilerin ilk birkaç baytı IV olabilir. Lütfen sahip olduğunuz tüm bilgileri sağlayın ve geçerli bir tam örnek (kez ve şifreli veri) gönderin. Şifrelenmiş veriler ikili olduğu için, onu kodlanmış Base 64 veya onaltılık bir gösterimde yayınlamanız gerekir. – Codo

cevap

3

şifresini çözmek için, öyleydi müvekkilim kendi ucunda şifreleme/şifre çözme işleme nasıl oluşturulduğunu tüm bilgileri 23 şifrelemek dtb tarafından önerilen AesManaged example kullanarak düz ileri.

nihayet hayata kodu şöyle başladı:

try 
    { 
     // Create a new instance of the AesManaged class. This generates a new key and initialization vector (IV). 
     AesManaged myAes = new AesManaged(); 

     // Override the cipher mode, key and IV 
     myAes.Mode = CipherMode.ECB; 
     myAes.IV = new byte[16] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // CRB mode uses an empty IV 
     myAes.Key = CipherKey; // Byte array representing the key 
     myAes.Padding = PaddingMode.None; 

     // Create a encryption object to perform the stream transform. 
     ICryptoTransform encryptor = myAes.CreateEncryptor(); 

     // TODO: perform the encryption/decryption as required... 

    } 
    catch (Exception ex) 
    { 
     // TODO: Log the error 
     throw ex; 
    } 
+0

ECB şifreleme modunu kullanmanızı tavsiye etmem. CBC'yi veya başka bir şeyi kullanın.Nedenini bilmeniz gerekiyorsa, bu Vikipedi Makalesine bir göz atın: http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation. Ayrıca, burada AES ile şifrelemenin nasıl yapılacağına dair iyi bir örnek: C#: https://github.com/jbubriski/Encryptamajig –

+0

Farklı verilerinizi her şifrelediğinizde IV'niz de rastgele olmalıdır. Yorumda CRB moduna da atıfta bulunuyorsunuz ... –

+1

@JohnBubriski - Şifrelenmiş dosyayı sağlayan üçüncü taraf şifre modu ve IV kullanımı konusunda ısrar ediyor. Anladığım kadarıyla bunu yapman gerekmiyor ama "Fit in or F ** k off" durumundaydı. – TeamWild

8

Belki bu örnek listelenen here size yardımcı olabilir. Ben bulduklarını kez yazarın Bildirimi kodunun

yaklaşık 24 satır

İlgili konular