Şifreleme teknikleri; Convert.ToBase64String ve SHA1, SHA256 vb...

Merhaba arkadaşlar, toBaseString ve diğer algoritmaların arasındaki fark nedir? Hangisinin kullanmalıyız bunları kısaca anlatacağım.

ToBase64String yöntemi Convert sınıfını bir metodudur. Bu binary olarak kodlama yaparak verinin içeriğini değiştirir. Bu kodlanmış veriyi Convert.FromBase64String(şifrlenmişVeri) metodunu kullanarak orjinal veriyi ulaşabiliriz. 

Bir veriyi kodlamak yerine şifleyebiliriz. Yalnız bu şifrelenmiş bilgilerin orjinalini geri döndürmek imkansız olmasada çok zordur. Bu algoritmalar şunlardır. Bu algorimaların içeriğini msdn den erişebilirsiniz.

    System.Security.Cryptography.KeyedHashAlgorithm
    System.Security.Cryptography.MD5
    System.Security.Cryptography.RIPEMD160
    System.Security.Cryptography.SHA1
    System.Security.Cryptography.SHA256
    System.Security.Cryptography.SHA384
    System.Security.Cryptography.SHA512

public string Sifrele(string data)
        {
            byte[] tempDizi = System.Text.Encoding.UTF8.GetBytes(data);//binary türüne çevir.
            return System.Convert.ToBase64String(tempDizi);
        }

        public string SifreyiCoz(string data)
        {
           byte[] tempDizi = System.Convert.FromBase64String(data);
           return  System.Text.Encoding.UTF8.GetString(tempDizi);
        }

Algoritma türleri System.Security.Cryptography.HashAlgorithm  classında mevcuttur.  Bunlar absract bir sınıf olduğu için, bu sınıfdan kalıtım alan bir sınıfdan başlatmak gerekir.

SHA1 sifrele = new SHA1CryptoServiceProvider();
            string SifrelenecekVeri = "Merhaba";
            string Sifrelenmis = Convert.ToBase64String(sifrele.ComputeHash(Encoding.UTF8.GetBytes(SifrelenecekVeri)));

 

ProtectedData.Protect(), ProtectedData.Unprotect() gibi yöntemler kullanılarak da şifreleme yapılabilir. Burada bir byte dizisi ve DataProtectionScope.CurrentUser veya DataProtectionScope.LocalMachine enum türünü kulanılark şifrleme yapılabilir.

byte[] source= UnicodeEncoding.ASCII.GetBytes("erkan Yürek");
            byte[] sifreli=ProtectedData.Protect(source, new byte[] {2,3,4},DataProtectionScope.CurrentUser);
            byte[] sifresiz=ProtectedData.Unprotect(sifreli,new byte[] {2,3,4},DataProtectionScope.LocalMachine);

            string cozulmemis = UnicodeEncoding.ASCII.GetString(sifreli);
            
            string cozulmus=UnicodeEncoding.ASCII.GetString(sifresiz);
            Console.WriteLine(cozulmemis);
            Console.WriteLine(cozulmus);

Bu ProtectedData ile ilgili Burak Selim Şenyurtun ilgili bir yazısı buradan da erişebilirsiniz.

Bir sonraki makalede görüşmek üzere esenkalınız.

 

Add comment

The file '/Custom/Widgets/Calendar/widget.cshtml' does not exist.The file '/Custom/Widgets/Category list/widget.cshtml' does not exist.The file '/Custom/Widgets/Tag cloud/widget.cshtml' does not exist.The file '/Custom/Widgets/Page List/widget.cshtml' does not exist.The file '/Custom/Widgets/Month List/widget.cshtml' does not exist.