Bu makalemizde MacTribleDES ten bahsedeceğim.Ancak ismi sizi yanıltmasın,ne kadar TrebleDES desek te hash algoritmasından türetilmis bir KeyedHash algoritmasıdır.
MacTrebleDES mesaj doğrulama kodu oluşturmak üzere türetilmiştir.Mesajı gönderen pc ile alan pc aynı anahtarı kullanırsa ve mac adresleri doğrularsa mesaj iletilmiş olur.Yane mesajı gönderen ve alan kişi için ortak bir anahtar mantığı üzerine oturtulmuş bir algoritmadır.
İşte .Net Framework üzerindeki bu sınfta bu doğrulama kodlarının oluşturulması,adreslenmesi ve anahtarlanması için türetilmiş bir sınıftır.
.Net Framework üzerinde MacTribleDES rgbkey olarak tanımlanan 8 byte,16 byte ve 24 byte lık anahtar uzunluklarını oluşturur.Türettiği hash değeri ise 8 byte dır.
.Net Platformu üzerinde ;
System. Object
System.Security.Cryptography.HashAlgorithm
System.Security.Cryptography.KeyedHashAlgorithm
Namespace lerini takip eder.
Tanımlanma blokları aşağıdadır.
Public Class MACTripleDES
Inherits KeyedHashAlgorithm
public class MACTripleDES : KeyedHashAlgorithm
public __gc class MACTripleDES : public KeyedHashAlgorithm
Yine üç ayrı dil bakımından oluşturma aşamasındaki birer küçük kod bloklarıyla devam edelim.
Dim data(DATA_SIZE) As Byte
Dim mac3des As New MACTripleDES(key)
Dim result As Byte() = mac3des.ComputeHash(data)
byte[] data = new byte[DATA_SIZE];
byte[] key = new byte[24];
MACTripleDES mac3des = new MACTripleDES(key);
byte[] result = mac3des.ComputeHash(data);
Byte data[] = new Byte[DATA_SIZE];
Byte key[] = new Byte[24];
MACTripleDES* mac3des = new MACTripleDES(key);
Byte result[] = mac3des->ComputeHash(data);
Konsept bir örnekle devam edelim……
Örn:
Tam mantığını oturtmak için çok güzel bir örnekti.Şimdi herşeyin oturması için bir uygulamaya daha bakalım.
Uyg:
using System.Collections;
using System.Security.Cryptography;
………………….
…………………
………….
…….
……
private static void EncodeNothing()
MACTripleDES macTriple = new MACTripleDES();
byte[] key = new byte[24];
RandomNumberGenerator.Create().GetBytes(key);
macTriple.ComputeHash(new byte[1024]);
SummarizeMAC(macTriple, "MACTripleDES after initialization.");
private static void EncodeStream()
byte[] keyData = new byte[24];
RandomNumberGenerator.Create().GetBytes(keyData);
MACTripleDES macTriple = new MACTripleDES(keyData);
string filePath = (System.IO.Directory.GetCurrentDirectory() +
new FileStream(filePath, FileMode.Open, FileAccess.Read);
macTriple.ComputeHash(fileStream);
"MACTripleDES after encoding a file stream.");
catch (FileNotFoundException ex)
Console.WriteLine("Specified path was not found: "
private static void EncodeMessage()
byte[] keyData = new byte[24];
RandomNumberGenerator.Create().GetBytes(keyData);
MACTripleDES macTriple = new MACTripleDES(keyData);
string message = "Encoding is fun!";
EncodeBytes(Encoding.ASCII.GetBytes(message));
macTriple.ComputeHash(encodedMessage);
SummarizeMAC(macTriple, "MACTripleDES after encoding a message.");
private static byte[] EncodeBytes(byte[] sourceBytes)
byte[] targetBytes = new byte[1024];
int sourceByteLength = sourceBytes.Length;
byte[] key = new byte[24];
RandomNumberGenerator.Create().GetBytes(key);
string tripleDesName = "System.Security.Cryptography.TripleDES";
MACTripleDES macTriple = new MACTripleDES(tripleDesName, key);
int inputBlockSize = macTriple.InputBlockSize;
………………………………………………………………………………………
.Net Security üzerine güzel bir kaynak olduğunu düşünüyorum.Bu zaman kadar ki makalelerimi okuyan arkadaşlarımızın yavaş yavaş bişeyler yapmaya başladığını hissediyorum…Ancak şunu her zaman belirtmek istiyorumki hiçbir durumda tam güvenlik diye bir şey yoktur , kimse kendini zorlamasın.Bazen alt ve üst limitlerini bilmekte her zaman için fayda vardır!!!
Bir sonraki makalemde görüşmek ümidi ile ……….Mutlu Günler Dilerim……