SymmetricAlgorithm etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
SymmetricAlgorithm etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

11 Eylül 2018 Salı

Aes Sınıfı - Simetrik Şifreleme

Kullanım
Şöyle yaparız.
using (Aes algorithm = Aes.Create())
{
  ...
}
Create metodu
Şöyle yaparız. CBC modunda çalışır.
Aes aesAlg = Aes.Create();
CreateEncryptor metodu
Şöyle yaparız.
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
Encrypt metodu
Şöyle yaparız.
var cypherText = AES.Encrypt(123d); // 8 bytes
IV Alanı
Şöyle yaparız.
byte[] IV = ...;
aesAlg.IV = IV;
Key Alanı
Şöyle yaparız.
byte[] Key = ...
aesAlg.Key = Key;

23 Ocak 2018 Salı

AesCryptoServiceProvider Sınıfı - Simetrik Şifreleme

Giriş
Açıklaması şöyle
. NET provides two implementations of the AES encryption algorithm,  AesManaged and AesCryptoServiceProcider, but which one should you use? They both provide the same functionality in that they both implement the AES encryption specification. But the main difference is that AesManaged is a .NET specific implementation whereas AesCryptoServiceProcider uses the underlying cryptography libraries in Windows, which are FIPS-certified.
Bu sınıfın kardeşi AesManaged sınıfıdır.

System.Security.Cryptography.Aes sınıfından kalıtır.

Sınıfın Key, IV, BlockSize, KeySize, Padding ve Mode alanlarını doldurmak gerekir.

1. Sınıfın Key ve IV alanları byte[] ile doldurulur.

2. BlockSize ve KeySize alanları kaç bit ile çalışmak istediğimize göre doldurulur. Örneğin BlockSize 128 bit, KeySize 256 bit yapılır.

3. Padding ve Mode doldurulur. Padding belirtilen bitten daha küçük blokların nasıl doldurulacağını belirtir.

4. CreateEncryptor veya CreateDecryptor metodları çağrılarak bir ICryptoTransform arayüzü yaratılır. Bu arayüzün TransformFinalBlock metodu kullanılarak şifreleme gerçekleşir. Ya da bu arayüzü CryptoStream ile sarmalayarak daha kolay kullanabiliriz. CryptoStream her stream'de nesnesinde olduğu gibi Read ve Write metodları sunar.
Constructor - default
Şöyle yaparız.
using (var aes = new AesCryptoServiceProvider())
{
  ...
}
Constructor
Şöyle yaparız.
byte[] key = ...; byte[] vector = ...;
using(AesCryptoServiceProvider aes = new AesCryptoServiceProvider {
 Key = key, IV = vector}) {...}
BlockSize Alanı
Şöyle yaparız.
aes.BlockSize = 128;
CreateDecryptor metodu
Using ile kullanılır. Şöyle yaparız.
using (ICryptoTransform decrypt = aes.CreateDecryptor(aes.Key, aes.IV))
{
  ...
}
CreateEncryptor metodu
Using ile kullanılır. Şöyle yaparız.
using(ICryptoTransform encryptor = aes.CreateEncryptor()){...}
Şöyle yaparız.
ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);
GenerateKey metodu
Key alanını rastgele değer ile doldurur. Şöyle yaparız.
aes.GenerateKey();
GenerateIV metodu
IV alanını rastgele değer ile doldurur. Şöyle yaparız.
aes.GenerateIV();

IV Alanı
Initial Vector verisi ile doldurulur. Şöyle yaparız.
string IV = "1a1a1a1a1a1a1a1a";
aes.IV = ASCIIEncoding.ASCII.GetBytes(IV);

Key Alanı
Key verisi ile doldurulur. Şöyle yaparız.
string Key = "1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a";
aes.Key = ASCIIEncoding.ASCII.GetBytes(Key);
KeySize Alanı
Şöyle yaparız.
aes.KeySize = 128;
Şöyle yaparız.
aes.KeySize = 256;
Mode Alanı
Şöyle yaparız.
aes.Mode = CipherMode.CBC;
Padding Alanı
Şöyle yaparız.
aes.Padding = PaddingMode.Zeros;
Şöyle yaparız.
aes.Padding = PaddingMode.PKCS7;



11 Mayıs 2016 Çarşamba

SymmetricAlgorithm Sınıfı

SymmetricAlgorithm Sınıfı

Bu bir sınav sorusu

Q:6 Which of the following is the base class for all symmetric algorithm classes?
 - RC2
 - SymmetricAlgorithm
 - DES
 - TripleDES

Soyut (Abstract) bir sınıftır. Bu sınıftan kalıtan sınıflar şunlardır.

System.Security.Cryptography.Aes (abstract)
System.Security.Cryptography.DES (abstract)
System.Security.Cryptography.RC2 (abstract)
System.Security.Cryptography.Rijndael (abstract)
System.Security.Cryptography.TripleDES (abstract)

AesCryptoServiceProvider Sınıfı
Aes Sınıfı yazısına taşıdım.
AesCryptoServiceProvider Sınıfı yazısına taşıdım.

DESCryptoServiceProvider Sınıfı
DESCryptoServiceProvider Sınıfı yazısına taşıdım.