14-02-2024, Saat: 01:42
Aşağıdaki uygulama için https://fundementals.sourceforge.net/dl.html adresindeki Cipher sınıflarından yararlandım. AES için sadece cCipherAES.pas dosyasını kullanmak yetiyor ve son derece basit bir yapısı var. Fakat sadece 16 bayt lık veri için örnek hazırlamışlar ve 128bit. AesEncrypter adında yeni bir sınıf hazırlayarak 128/256 bit özelliği ekledim. Base64 ve Hex çıktıları verebiliyor. Standart olarak ECB yani elektronik kod kitaplığı kullanıyor. AES için 256 bit şifreleme yapacaksanız 32, 128 bit şifreleme yapacaksanız 16 baytlık özel anahtar belirtmeniz gerekiyor. Doğruluk testi için şifrelenmiş metni mümkün mertebe Copy to Clipboard butonu ile kopyalayın. Memo kontrolünün Wrap özelliğini kapatıp, Horizontal özelliğini açsamda metni bölümleme yapmaya devam etti. Bu durumda direk CRLF karakterleri ekleniyor.
Doğrulama için https://anycript.com/ adresini kullandım.

JSON ifadesinin AES 256 Bit ile şifreleme örneği.
AES şifrelemede 128bit yahut 256bit anahtar kullansanız dahi, veri 16 baytlık yani 128 bitlik bloklar halinde şifreleniyor.
Buradan hareketle sizin şifreleme metniniz 16 bayt dan fazla ise Padding yani byte dolguları eklemeniz gerekiyor. Ve bunların belli bir dizilimi var.
AesEncrypter sınıfını yazarken bunları ayarlamak durumunda kaldım. Bu işlemlerin nasıl yapıldığını https://www.youtube.com/watch?v=3OTMLUEPZUc animasyonlu olarak ilgili youtube videosu ile keşfedebildim. İlgilenenler için son derece yararlı olabilir.
AesEncryper uygulama ve sınıflarına ait tüm kodlar makale ekinde mevcuttur.
Doğrulama için https://anycript.com/ adresini kullandım.

JSON ifadesinin AES 256 Bit ile şifreleme örneği.
procedure TForm1.Button3Click(Sender: TObject);
var
AESEncrypter: TAESEncrypter;
SecretKey: Utf8String;
EncText: Utf8String;
JObject: TJSONObject;
EncryptedText: String;
begin
JObject := TJSONObject.Create
.AddPair('username', TJSONString.Create('delphi.developer'))
.AddPair('hash', TJSONString.Create('ed8e44a5eea79ac15208241091261124d67a81239689a243e0f88565c8c0f5cd'));
EncText := JObject.ToJSON;
JObject.Free;
SecretKey := 'AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBB';
AESEncrypter := TAESEncrypter.Create(bt256, SecretKey, EncText);
try
EncryptedText := AESEncrypter.GetBase64String;
finally
AESEncrypter.Free;
end;
end;
AES şifrelemede 128bit yahut 256bit anahtar kullansanız dahi, veri 16 baytlık yani 128 bitlik bloklar halinde şifreleniyor.
Buradan hareketle sizin şifreleme metniniz 16 bayt dan fazla ise Padding yani byte dolguları eklemeniz gerekiyor. Ve bunların belli bir dizilimi var.
AesEncrypter sınıfını yazarken bunları ayarlamak durumunda kaldım. Bu işlemlerin nasıl yapıldığını https://www.youtube.com/watch?v=3OTMLUEPZUc animasyonlu olarak ilgili youtube videosu ile keşfedebildim. İlgilenenler için son derece yararlı olabilir.
AesEncryper uygulama ve sınıflarına ait tüm kodlar makale ekinde mevcuttur.

