C# Encrypt – Decrypt

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.

 

 

You May Also Like

About the Author: wodhack

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir