C# – CryptoStream ile Yazıları Şifrelemek

csharp-visual-studio

Merhaba arkadaşlar, bugün CryptoStream ile yazı ve sayıları şifrelemeyi göreceğiz. Bunun için birçok metot var örnek verecek olursak MD5 ve SHA1 bunların başında gelmekte. Aslında MD5 ve SHA1 ile alakalı bir şifreleme makalesi yazacaktım ama yazıları decoder(çözerken) sorunlar çıktığı için vazgeçtim. İnternet de CryptoStream şifreleme algoritmasını buldum. Ve birkaç projemde bu algoritmayı kullandım. Eğer sizde programlarınızda şifreli giriş kısımlarını kullanıyorsanız bu algoritmayı şiddetle tavsiye ederim.

İlk önce projemize sağ tıklayıp Add -> Class kısmından yeni bir class oluşturuyoruz. Class’ımızın adını ” CryptoStreamSifreleme ” olarak verelim. (Tırnaklar hariç)
Ve kodlarımızı yazalım ;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;

namespace CryptoStreamIleYazilariSifreleme
{
    class CryptoStreamSifreleme
    {
        public static string Encrypt(string key, string originalString)
        {

            byte[] bytes = Encoding.ASCII.GetBytes(key);

            if (String.IsNullOrEmpty(originalString)) return string.Empty;

            DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();

            MemoryStream memoryStream = new MemoryStream();

            CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoProvider.CreateEncryptor(bytes, bytes), CryptoStreamMode.Write);

            StreamWriter writer = new StreamWriter(cryptoStream);

            writer.Write(originalString);

            writer.Flush();

            cryptoStream.FlushFinalBlock();

            writer.Flush();

            return Convert.ToBase64String(memoryStream.GetBuffer(), 0, (int)memoryStream.Length);

        }

        public static string Decrypt(string key, string cryptedString)
        {

            byte[] bytes = Encoding.ASCII.GetBytes(key);

            if (String.IsNullOrEmpty(cryptedString)) return string.Empty;

            DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();

            MemoryStream memoryStream = new MemoryStream(Convert.FromBase64String(cryptedString));

            CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoProvider.CreateDecryptor(bytes, bytes), CryptoStreamMode.Read);

            StreamReader reader = new StreamReader(cryptoStream);

            return reader.ReadToEnd();
        }
    }
}

Tüm işlemi yapan bu yukarıdaki class sadece. Bize kalan tek şey ise Formumuza gelip tek satırlık bir kod yazmak…
Aşağıdaki kodla yazıyı şifreliyoruz.

string Sifrele = CryptoStreamSifreleme.Encrypt("12345678", textBox1.Text); //Textbox1 deki veriyi şifreliyoruz.
MessageBox.Show(Sifrele.ToString()); //Şifrelenmiş yazıyı gösteriyoruz.

Aşağıdaki kodla ise şifrelenmiş yazıyı çözüyoruz.

string SifreCoz = CryptoStreamSifreleme.Decrypt("12345678", textBox2.Text); //TextBox2 deki verinin şifresini çözüyoruz.
MessageBox.Show(Sifrele.ToString()); //Veriyi gösteriyoruz.

Yukarıdaki kodlarda ” 12345678 ” yazan kısım şifrelemenin türü ile alakalı bir kod. Orayı istediğiniz gibi değiştirebilirsiniz. Ama o kısmın şifrelerken ve çözerken aynı olması gerekmekte. Aksi taktirde veriyi yanlış çözecektir.

C#
CryptoStream ile Yazıları Şifreleme
İndirilme : 227 | Dosya Tipi : rar

3 yorum

  1. Mehmet Bulur Yanıtla

    Kullandığım projelerimde password yani şifre kısmı hep sorun teşkil ediyordu. CryptoStream metodunu sayenizde öğrendim ve projelerimde bu metodu kullanıyorum. Şifre kısmı CryptoStream ile şifrelendiği için daha güvenli oluyor. Teşekkürler 🙂

Bir Cevap Yazın

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