C# Encrypt – Decrypt

C# Encrypt – Decrypt

3 Temmuz 2018 3 Yazar: Mustafa BÜKÜLMEZ
Toplam Görüntülenme : 594
Yaklaşık okuma süresi : 8 DK
C# INI Ayar Dosyası Oluşturma - Kernel32.dll
C# Mod Alma İşlemi

C# Encrypt – Decrypt, yazımız ile c sharp eğitimlerimize devam ediyoruz. Yaklaşık bir haftadır yazı yazamıyordum ve son 3 4 gündür de site tasarımı üzerine çalıştım. Gerçi bu tasarımı pek beğenemedim ama bir süre de daha fazla da uğraşmak istemedim.   C Sharp Encrypt – Decrypt  işlemleri son zamanlarda konu olarak üzerinde durduğum ve önem verdiğim konulan arasında.. Bu güvenlik konuları üzerine düşmeye başladığımdan dolayı bu sitem için de SSL satın aldım. SSL konusunu da farklı bir yazımda detaylıca değineceğim. Girişi fazla uzatmadan gelin C Sharp Encrypt – Decrypt dersimize geçelim.

C Sharp Encrypt – Decrypt

Veri şifreleme konusunda bir çok yöntem vardır ancak ben şuanda projelerimde kullandığım RSA Şifreleme yöntemi anlatacağım.

Dezavantajları

  • Her kullanıcı kendine ait bir şifre tutmasıyla bütün gizlenmiş metinleri tek anahtarla çözme imkanına sahiptir. Bu da anahtarın kaybolması durumunda veya başka birinin ele geçirmesi durumunda büyük sıkıntılara yol açmaktadır.
  • Anahtarların değiş tokuş edilmesi gerektiğinden dolayı anahtarı karşı tarafa iletmek için bir ağ kullanmak zorundalığı vardır. Bu da ağda ekstra güvenlik önlemi almayı gerektirmektedir.

Örneğin n tane kullanıcı olması durumunda n1 adet şifre oluşturmak gerekli ve bu sistemde tutulmalıdır. Bu da ekstra bellek alanı tutacağından bu da bir dezavantaj olarak görülebilir.

Advertisements

c sharp rsa şifreleme

Bu siteden bir C# RSA key oluşturabilirsiniz. http://travistidwell.com/jsencrypt/demo/

Teknik konulara çok fazla girmek istemiyorum. Bu dersimde size bir veriyi şifreleme ve çözme üzerine kullanılan kodları vermek istiyorum.

İlgili İçerik  List Listeler Arasındaki Farkları Bulmak - (Generic List)

Birazdan vereceğim kodları çalıştırabilmeniz için aşağıdaki namespace’lere ihtiyacınız vardır.

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

C Sharp Encrypt RSA Şifreleme

İlk önce şifreleme kodlarını verelim.

 public  string Encrypt(string Text)
        {
            var publicKey = ""; 
            // RSA Public Key'i buraya yazmalısınız.
            // Yukarıda verdiğim linkte görebilirsiniz.
            var testData = Encoding.UTF8.GetBytes(Text);
            using (var rsa = new RSACryptoServiceProvider(1024))
            {
                try
                {
                    rsa.FromXmlString(publicKey.ToString());
                    var encryptedData = rsa.Encrypt(testData, true);
                    var base64Encrypted = Convert.ToBase64String(encryptedData);
                    return base64Encrypted;
                }
                finally
                {
                    rsa.PersistKeyInCsp = false;
                }
            }
        }

Evet yukarıda gördüğünüz kodlar, bir veriyi şifrelemek için gerekli olan kodlardır.

 

C Sharp Decrypt RSA Şifre Çözme

public  string Decrypt(string Text)
        {
            string BOS = "";
            try
            {
                var privateKey = "";
                // buraya gizli key'inizi yazmalısınız.
                var testData = Encoding.UTF8.GetBytes(Text);
                using (var rsa = new RSACryptoServiceProvider(1024))
                {
                    try
                    {
                        var base64Encrypted = Text;
                        rsa.FromXmlString(privateKey);
                        var resultBytes = Convert.FromBase64String(base64Encrypted);
                        var decryptedBytes = rsa.Decrypt(resultBytes, true);
                        var decryptedData = Encoding.UTF8.GetString(decryptedBytes);
                        return decryptedData.ToString();
                    }
                    finally
                    {
                        rsa.PersistKeyInCsp = false;
                    }
                }
            }
            catch { return BOS; } // şifre çözülemedi ise "BOS" cevabı dönecek
        }

Yukarıda gördüğünüz kodlar ise Public Key’imiz ile şifrelediğimiz bir veriyi çözme kodlarıdır.

Private Key (Gizli Anahtar) ile Public Key (Açık Anahtar) birbirleri ile bağlantılıdır. Başkasının şifrelediği bir veriyi siz kendi Private Key’iniz ile çözemezsiniz.

 

Ben kendi projelerimde kullanıcı şifreleri, sql connection string’te yer alan ip ve sql kullanıcı şifreleri yada görünmesini istemediğim parametrelerimde kullanmaktayım.  Bazen benim için sorun çıkarsa da kullanılmasının gerekli olduğunu düşünüyorum. Benim için sıkıntısı ne derseniz de şöyle açıklayayım. Örnek bir yetkilendirme yaptım ve test etmem gerekiyor. Kullanıcının şifresini göremediğimden korsan yollar kullanmam yada kullanıcıdan şifresini istemem gerekiyor. Aslında öyle büyük bir sorun değil. 😀


C Sharp Encrypt – Decrypt , yazımızda bu kadar dostlar diğer c sharp eğitim yazılarımızda görüşmek üzere…

C Sharp Eğitim Seti ve ERP Programlama eğitimi sayfasına gitmek için tıklayınız.

İlgili İçerik  C# Date Değişkenini Sayı Değerine Dönüştürme

Sağlıcakla ve takipte kalın. 😉

C# INI Ayar Dosyası Oluşturma - Kernel32.dll
C# Mod Alma İşlemi