C# Encrypt – Decrypt

C# Encrypt – Decrypt

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

Selamlar

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

Kısaca RSA şifrelemeye değinirsek; RSA Algoritması RSA, güvenilirliği çok büyük tam sayılarla işlem yapmanın zorluğuna dayanan bir şifreleme tekniğidir. Bu algoritma, adını Ron Rivest, Adi Shamir ve Leonard Adleman adlı geliştiricilerinin soyadlarının ilk harflerinden almıştır. Asimetrik bir şifreleme algoritmasıdır.

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 n−1 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.

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.

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.

Bu dersimizde bu kadar arkadaşlar diğer derslerimizde görüşmez üzere.

Sağlıcakla kalın. ;) 

Mustafa BÜKÜLMEZ
http://mustafabukulmez.com -- Web sitesi, ERP, MRP, CRM ve kişiye özel uygulamalar hazırlanır. -- Deneyip çalıştığını onaylamadan çok nadir ders eklerim. Denemediklerim ise eski makalelerimdendir. Hem bildiklerimi paylaşmak hemde her seferinde aramamak için yayınlıyorum. -- *Bilgi paylaştıkça çoğalır. *Bir mum diğer mumu yakmakla ışığından bir şey kaybetmez. Aksine Daha çok ışık yayar. -- 1992 İstanbul doğumluyum. Kahramanmaraş'ta yaşıyorum. Lise: Ağ sistemleri ve Yönetimi, Üniversite: Bilgisayar Programcılığı.. -- 07.2014 tarihinden beri bir firmada Bilgi İşlem Müdürü olarak çalışmaktayım. -- Kişisel Bloğum : https://csharpiledundenbugune.blogspot.com.tr/
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git