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.