Aşağıda örnek kodu paylaştığım PHP de aslında tek satırda bu işin ne kadar kolay olduğunu göreceksiniz. Şimdilik bunu kullanarak Delphi tarafına json olarak aktarıyorum ama bu çözümü kullanmak da istemiyorum. Delphi tarafında gerek forumda gerekse nette yaptığım araştırmalarda elde ettiğim kodların hiçbirisi bana nedense doğru çözümü vermedi. Denediğim kodlar bir türlü doğru şifreleme yapmıyor. AES-256-ECB olarak aşağıdaki gibi bana doğru şifreleme yapacak Delphi kodu aramaya devam ediyorum. Netice elde edebilirsem bunu da paylaşacağım.
// The encrypted data already came in Base64 - no need to encode it
// again in Base64. Just concatenate it with the initialization
// vector, which is the only part that should also be encoded to
// Base64. And now we have a 7bit-safe ASCII text, which could be
// easily inserted into emails.
(13-02-2024, Saat: 12:48)tmrksmt Adlı Kullanıcıdan Alıntı: Aşağıda örnek kodu paylaştığım PHP de aslında tek satırda bu işin ne kadar kolay olduğunu göreceksiniz. ....
Tüm programlama dillerinde "base64" şifrelemesi (ki, key olmadan bu bir şifreleme değildir) hazır birer fonksiyondur. Kolay olması buradan geliyor.
Eklediğim dll'i import edebilseydiniz, paylaştığınız php kodu gibi 3-5 satırdan ibaret basit bir Delphi kodu olacacaktı.
https://github.com/Delphier/TAES
@3ddark paylaştığı linkteki örneği aşağıdaki gibi değiştirdiğimde : "zsBwXiUHqbiAFRun5ZwEHA=="
Bunu bir kontrol eder misin?
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.
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.
Öncelikle tüm cevap yazan arkadaşlara çok teşekkür ederim.
(14-02-2024, Saat: 01:42)delphi.developer Adlı Kullanıcıdan Alıntı: 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.
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.
Kardeşim Allah razı olsun tam istediğim gibi doğru şifreleme yapan kolay bir çözüm sunmuşsun. İşimi gördü sağol, varol...
Diğer arkadaşlara da çok teşekkür ederim.
(14-02-2024, Saat: 01:42)delphi.developer Adlı Kullanıcıdan Alıntı: 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.
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.
Hocam verdiğiniz örnek gerçekten çok güzel çalışıyor eline sağlık fakat geri dönüştürmeyi bulamadım şifreli veriyi nasıl geri çözümleyebilirim yardımlarınızı bekliyorum.