Aşağıda TCLCrypto kullanımı örneği vardır. Bu Component ile Hash'leme yapabilirsiniz.
var
MyForm:TCLForm;
Memo1 : TclMemo;
Crypto: TCLCrypto;
GirisMetni: string;
SifrelenmisMetin,
CozumlenmisMetin,
SHA3Hash, SHA2Hash, SHA3OzelHash: string;
IVOznek, AnahtarOznek, HexCikti, HamCikti: string;
user,scopes:string;
{
MyForm = TCLForm.Create(Self);
Memo1 = MyForm.AddNewMemo(MyForm,'Memo1','');
Memo1.Align = alClient;
// AES Nedir?
// AES (Advanced Encryption Standard), simetrik bir şifreleme algoritmasıdır.
// Veriyi güvenli bir şekilde şifrelemek için bir anahtar kullanır. Genellikle
// 128, 192 veya 256 bit anahtar uzunlukları ile çalışır.
// SHA-2 Nedir?
// SHA-2 (Secure Hash Algorithm 2), kriptografik bir hash algoritmasıdır.
// Veri bütünlüğünü sağlamak ve kimlik doğrulama için kullanılır. 256 ve 512 bit
// gibi farklı hash uzunlukları sunar.
// SHA-3 Nedir?
// SHA-3, SHA-2'nin gelişmiş bir versiyonudur. Modern güvenlik ihtiyaçlarını
// karşılamak için tasarlanmıştır. TshA ve TxOF modlarında çalışabilir.
// Define the input text to be encrypted and hashed
GirisMetni = 'TestText';
// Instantiate the cryptographic library object
Crypto = TCLCrypto.Create;
try
try
// Kullanıcı tanımlı IV ve anahtarla AES Şifreleme Yapılandırması
Crypto.AES.AType = atcbc; // AES Cipher Block Chaining (CBC) modunu kullan
Crypto.AES.KeyLength = kl256; // Anahtar uzunluğunu 256 bit olarak ayarla
Crypto.AES.OutputFormat = base64; // Şifrelenmiş metni Base64 formatında çıktı
Crypto.AES.PaddingMode = PKCS7; // Blok tamamlanması için PKCS7 dolgu modunu kullan
Crypto.AES.Unicode = yesUni; // Unicode desteğini etkinleştir
Crypto.AES.IVMode = userdefined; // Kullanıcı tanımlı Başlatma Vektörü (IV) kullan
Crypto.AES.IV = 'BuBirIVnumarasii'; // IV'yi tanımlayın
Crypto.AES.Key = 'BuBirKeyDirHaberinizOlsunTamamMi'; // Şifreleme anahtarını tanımlayın
// AES kullanarak giriş metnini şifreleyin
SifrelenmisMetin = Crypto.AES.Encrypt(GirisMetni);
Memo1.Lines.Text = 'AES Şifrelenmiş Metin (CBC Modu):';
Memo1.Lines.Add(SifrelenmisMetin);
Memo1.Lines.Add('~~~~~~~~~~~Cozumleme~~~~~~~~~~~~~~~~~~~~~');
CozumlenmisMetin = Crypto.AES.DecryptStr(SifrelenmisMetin);
Memo1.Lines.Add(CozumlenmisMetin);
// Rastgele IV ile AES Şifreleme Yapılandırması
Crypto.AES.IVMode = rand; // Rastgele bir IV kullan
IVOznek = Crypto.AES.Encrypt(GirisMetni);
Memo1.Lines.Add('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
Memo1.Lines.Add('AES Şifrelenmiş Metin (Rastgele IV):');
Memo1.Lines.Add(IVOznek);
// ECB modunda AES Şifreleme
Crypto.AES.AType = atECB; // ECB moduna geçiş yap
AnahtarOznek = Crypto.AES.Encrypt(GirisMetni);
Memo1.Lines.Add('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
Memo1.Lines.Add('AES Şifrelenmiş Metin (ECB Modu):');
Memo1.Lines.Add(AnahtarOznek);
// Şifrelenmiş metni Hexadecimal olarak çıktı
Crypto.AES.OutputFormat = hexa; // Çıktı formatını hexadecimal olarak değiştir
HexCikti = Crypto.AES.Encrypt(GirisMetni);
Memo1.Lines.Add('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
Memo1.Lines.Add('AES Şifrelenmiş Metin (Hexadecimal Çıktı):');
Memo1.Lines.Add(HexCikti);
// Şifrelenmiş metni Ham İkili olarak çıktı
Crypto.AES.OutputFormat = raw; // Çıktı formatını ham ikili olarak değiştir
HamCikti = Crypto.AES.Encrypt(GirisMetni);
Memo1.Lines.Add('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
Memo1.Lines.Add('AES Şifrelenmiş Metin (Ham Çıktı):');
Memo1.Lines.Add(HamCikti);
// SHA-3 Hash Yapılandırması (tsha modu)
Crypto.SHA3Hash.AType = tsha; // tsha modunda SHA-3 hash algoritmasını kullan
Crypto.SHA3Hash.OutputFormat = base64; // Hash'i Base64 formatında çıktı
Crypto.SHA3Hash.HashSizeBits = 512; // Hash boyutunu 512 bit olarak ayarla
Crypto.SHA3Hash.Version = 512; // SHA-3 versiyonunu ayarla (tsha modunda kullanıcı tarafından ayarlanamaz)
// Giriş metninin SHA-3 hash'ini oluşturun
SHA3Hash = Crypto.SHA3Hash.Hash(GirisMetni);
Memo1.Lines.Add('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
Memo1.Lines.Add('SHA-3 Hash (tsha modu):');
Memo1.Lines.Add(SHA3Hash);
// SHA-3 Hash Yapılandırması (txof modu)
Crypto.SHA3Hash.AType = txof; // txof modunda SHA-3 hash algoritmasını kullan
Crypto.SHA3Hash.OutputFormat = base64; // Hash'i Base64 formatında çıktı
Crypto.SHA3Hash.HashSizeBits = 64; // Özel hash boyutunu ayarla (8'in katı olmalı)
Crypto.SHA3Hash.Version = 256; // txof modunda kullanıcı tarafından ayarlanabilir versiyon
// Giriş metninin SHA-3 özel hash'ini oluşturun
SHA3OzelHash = Crypto.SHA3Hash.Hash(GirisMetni);
Memo1.Lines.Add('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
Memo1.Lines.Add('SHA-3 Hash (txof modu):');
Memo1.Lines.Add(SHA3OzelHash);
// SHA-2 Hash Yapılandırması
Crypto.SHA2Hash.OutputFormat = base64; // Hash'i Base64 formatında çıktı
Crypto.SHA2Hash.HashSizeBits = 512; // Hash boyutunu 512 bit olarak ayarla
// Giriş metninin SHA-2 hash'ini oluşturun
SHA2Hash = Crypto.SHA2Hash.Hash(GirisMetni);
Memo1.Lines.Add('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
Memo1.Lines.Add('SHA-2 Hash:');
Memo1.Lines.Add(SHA2Hash);
user = 'reader';
Crypto.JWT.SetClaim('user', user);
Crypto.JWT.SetClaim('admin', user == 'admin');
Scopes = 'reader';
if ((User == 'admin') || (User == 'writer'))
Scopes = Scopes + ' writer';
Crypto.JWT.SetClaim('scope', Scopes);
Memo1.Lines.Add('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
Memo1.Lines.Add('JWT:');
Memo1.Lines.Add(Crypto.JWT.CompactToken('super_secret_0123456789_0123456789', 256));
except
ShowMessage('Unknown Error');
}
finally
Crypto.Free;
}
MyForm.Run;
}