Posts Tagged :

encryption

Java – AES Algoritması ile Encryption ve Decryption 691 618 mezo

Java – AES Algoritması ile Encryption ve Decryption

Merhaba arkadaşlar

Bu yazımda sizlere AES algoritması kullarak nasıl Encryption işlemi yapabilirsiniz en basit haliyle anlatmak istiyorum. Eclipse i açtık yeni bir Java projesi olusturduk sonrasında 2 adet class’ı projemiz içersine ekledik isimleri TEST.java  ve ENCRYPT.java.

Amaç aslında Encrypt.java class ını başka projelerde de kullanılacak şekilde dizayn etmek 😉

Encrypt class ı içersine aşağıdaki kodları ekleyeceksiniz. 🙂

import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
import sun.misc.*;
public class encrypt {

	private static final String ALGO = "AES";
	private static final byte[] keyValue =  new byte[] 
        { 'M', 'e', 'Z', 'O', 'b', 'l', 'o','g', 's', 'B', 'e','s', 't', 'K', 'e', 'y' };

	public static String encrypt(String Data) throws Exception {
		Key key = generateKey();
		Cipher c = Cipher.getInstance(ALGO);
		c.init(Cipher.ENCRYPT_MODE, key);
		byte[] encVal = c.doFinal(Data.getBytes());
		String encryptedValue = new BASE64Encoder().encode(encVal);
		return encryptedValue;
	}
	public static String decrypt(String encryptedData) throws Exception {
		Key key = generateKey();
		Cipher c = Cipher.getInstance(ALGO);
		c.init(Cipher.DECRYPT_MODE, key);
		byte[] decordedValue = new BASE64Decoder().decodeBuffer(encryptedData);
		byte[] decValue = c.doFinal(decordedValue);
		String decryptedValue = new String(decValue);
		return decryptedValue;
	}
	private static Key generateKey() throws Exception {
		Key key = new SecretKeySpec(keyValue, ALGO);
		return key;
	}
}

Ardından test.java yani çalıştırılacak olan class ımız içersinde main metodu bulunduran class içersinede aşağıdaki kodları ekliyorsunuz. Encrypt classı içersinde oluşturduğumuz metotları çağırıyoruz.

public class test {
	public static void main(String[] args) {
		String password = "Hello Word İt's MEZO Blog";
		String passwordEnc;
		String passwordDec;
		try {
			passwordEnc = encrypt.encrypt(password);
			passwordDec = encrypt.decrypt(encrypt.encrypt(password));

			System.out.println("Plain Text : " + password);
			System.out.println("Encrypted Text : " + passwordEnc);
			System.out.println("Decrypted Text : " + passwordDec);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

Ve işlemimiz bitti işte bu kadardı 🙂  artık Run As Java Application diyerek çalıştırıyor aşağıdaki çıktımızı alıyoruz.

 

Programımızın Çıktısı
Encrypt edilecek Text : Hello World It’s MEZO Blog
Encrypt edilmiş Text : 2loMo4Zhrtsbqg/4NOk1MpYp1uVbXkDwUNZKnons30o=
Decrypt edilmiş Text : Hello World It’s MEZO Blog

 

Umarım Yararlı Olmuştur

Bilgiyle Kalın

M.Zeki OSMANCIK

C# ve PHP 3DESCrypto 691 618 mezo

C# ve PHP 3DESCrypto

Merhaba arkadaşlar
Bu kez sizlere şifreleme yöntemi olan 3DES(Triple Data Encryption Algorithm diye geçer ancak DES kısaltması Data Encryption Standard dan gelmektedir.) şifreleme yönteminin kodlarını vermek istiyorum belki bu yazıya daha sonra ayrıntılı şekilde bunun ne olduğu ile ilgilide birşeyler ekleyebilirim. 🙂 PHP ve C# için kodları aşağıda sizlerle paylaşıyorum
PHP

function encrypt($string) {
//Key
$key = "xxxxxxxx";

//Encryption
$cipher_alg = MCRYPT_TRIPLEDES;

$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher_alg,MCRYPT_MODE_ECB), MCRYPT_RAND);

$encrypted_string = mcrypt_encrypt($cipher_alg, $key, $string, MCRYPT_MODE_ECB, $iv);
return base64_encode($encrypted_string);
return $encrypted_string;
}

function decrypt($string) {
$string = base64_decode($string);

//key
$key = "xxxxxxxx";

$cipher_alg = MCRYPT_TRIPLEDES;

$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher_alg,MCRYPT_MODE_ECB), MCRYPT_RAND);

$decrypted_string = mcrypt_decrypt($cipher_alg, $key, $string, MCRYPT_MODE_ECB, $iv);
return trim($decrypted_string);
}

C# encryption:

using System;
using System.Security.Cryptography;
using System.Text;

public class Crypto3DES
{
public Crypto3DES()
{

}

private System.Text.Encoding encoding;

public string Key
{
get
{
return "xxxxxxxx";
}
}

public System.Text.Encoding Encoding
{
get
{
if( encoding == null )
{
encoding = System.Text.Encoding.UTF8;
}
return encoding;
}

set
{
encoding = value;
}
}

public string Encrypt3DES( string strString )
{
DESCryptoServiceProvider DES = new DESCryptoServiceProvider();

DES.Key = Encoding.GetBytes( this.Key );
DES.Mode = CipherMode.ECB;
DES.Padding = PaddingMode.Zeros;

ICryptoTransform DESEncrypt = DES.CreateEncryptor();

byte[] Buffer = encoding.GetBytes(strString);

return Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
}

public string Decrypt3DES( string strString )
{
DESCryptoServiceProvider DES = new DESCryptoServiceProvider ();

DES.Key = Encoding.UTF8.GetBytes( this.Key );
DES.Mode = CipherMode.ECB;
DES.Padding = PaddingMode.Zeros;
ICryptoTransform DESDecrypt = DES.CreateDecryptor();

byte[] Buffer = Convert.FromBase64String(strString);
return UTF8Encoding.UTF8.GetString( DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length) );
}
}

Umarım Yararlı Olur
Bilgiyle Kalın
M.Zeki Osmancık

SQL _ Views II 253 219 mezo

SQL _ Views II

Bir önceki yazımızda View nasıl yazılır ne işe yarar bunu öğrenmiştik . Bu yazımızda ise View içersinde yapabileceğimiz bir takım işlemleri öğreneceğiz.
Oluşturduğumuz View yapısı üzerinde değişiklik yapabilmek için Alter View; Silebilmek için Drop View cümlelerini kullanıyoruz.

Encryption:

Encryption cümlesi şifreleme anlamına gelir. Türkçe anlamınında belirttiği gibi view in kod içeriğini  yani view i oluşturduğumuz kodları görüntülenemez şekilde şifrelememizi sağlar. Bu işlemi geri almak istersek maalesef ki başarısız oluyoruz çünkü Decryption gibi bir çözüm yok. Encryption kullanılması gerekiyorsa mutlaka View in kaynak kodlarının başka bir kaynağa yedeklenmesi şiddetle tavsiye edilir.

With Encryption Yapısı

Create View viewAdiWith EncryptionAS

Select Sorgusu

Örnek olarak yukardaki gibi bir View oluşturduğumuzda veritabanındaki Views klasörü içersinden bu yarattığımız View i bulduğumuzda üzerinde bir kilit simgesinin olduğunu göreceğiz ve sağ tık ile düzenlemeye çalıştığımızda başarısız olacağız. Encryption ile kodlarımızı emniyet almış olduk. Daha öncede belirttiğim gibi bunu tekrar geri döndürecek kilidi çözecek bir kod yok.

Oluşturulan view ların içeriklerini görüntülemek için kullandığımız bir stored procedure var. Sp_helptext . bu SP bize belirttiğimiz View içeriğini gösterir. Öncelikle nasıl kullanıldığına bakalım sonra Encrypt ettiğimiz View i görüntüleyebilirmiyiz ona bakalım.

Görüldüğü gibi normal bir view içeriğini görüntüledik. Şimdide Encrypt edilmiş view a bakalım 😉

Schemabinding

Encryption kadar olmasada Schemabinding kelimesinin tercümesi zaten bu kodu hangi amaçlar için kullanabileceğimizi anlamaya yeterli oluyor. Eğer oluşturulacak View içersinde Schemabinding kullanılıyorsa View içersinde kullandığımız tabloların sütunlarını kilitlemiş oluruz. View içersinde Schemabinding kullanırken hatırlamamız gereken bazı kurallar var.

Öncelikli kural Schemabinding kullanacağımız View içersindeki sorgularımızda * işaretini kullanmamak bunun yerine tüm görüntülemek istediğimiz sütunları tek tek yazmamız gerekiyor.  Yazmazsak aşağıdaki gibi bir hata ile karşılaşacağız.

Ayrıca belirteceğimiz tablo isimlerini tabloismi.sütunismi olarak belirtmemiz gerekiyor. Son olarakda tablo ismi ile alakalı olan kuralımız var , tablo isminde ise dbo.tabloismi yazmamız gerekiyor ki tam olarak tabloyu ve sütunlarının yerini garantilemiş olalım.

Yukarıdaki örnekte View’de görüntüleyeceğimiz verilerin bulunduğu tablo ya da tablolardaki sütunların yapısında yapılacak herhangi bir değişikliği bu View’i silmedikçe ya da Schemabinding özelliğini View’imizden kaldırmadıkça yapamayacağız. Oldu da böyle bir işlemi Schemabinding özelliği varken yapmaya kalkıştık, SQL bize bu işlemin yapılamayacağını belirten bir hata mesajı verecektir. UrunleriListele isimli View için kullandığımız dbo.Products tablosundan ProductName sütununu kaldırmaya çalışalım.

WithCheckOption

Son olarakda sizlere View lerin WithcheckOption özelliğinden bahsetmek istiyorum.  Biliyorsunuz ki View ler içersinde tek bir tablo ile işlem yaptığımızda Insert,Update, Delete gibi işlemleri yapabiliyoruz. İşte bu işlemleri yapabildiğimiz view ler içersinde bazı kısıtlama yapabilmek için WithCheckOption özelliğini kullanırız. Yeni bir view ile bu özelliği inceleyelim.

Bu şekilde tek tablo üzerinde ve Where kelimesi ile kriter belirtilerek oluşturduğumuz View üzerine insert işlemi yapmaya kalktığımızda hata ile karşılaşıyoruz.

Umarım yararlı olmuştur sonraki yazılarda görüşmek üzere.

    Join our Newsletter

    We'll send you newsletters with news, tips & tricks. No spams here.