Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
AES Şifreleme Hakkında
#1
Merhabalar.

Forumda ve nette epeyce arama yaptım ancak tam olarak bana referans olacak bir çözüm bulamadım.

Bir entegrasyon için bana verilen secret key ile Rijndael - AES şifreleme algoritmasına göre şifrelenmesi gerekiyor. 

AES Parametreleri şu şekilde;

Chipper Mode = ECB 
Padding = PKCS7 
Block Size = 128
KeySize = 256 

Aşağıdaki gibi bir json'u AES ile nasıl şifreleyebilirim? Şifreledikten sonra RestClient'in body parametresine ekleyip post edeceğim.

{ "value": "ŞİFRELENMİŞ JSON BODY" }

Bu konuda yardımcı olacak arkadaşlara teşekkür ederim.
Ne ekersen onu biçersin!  Idea
Cevapla
#2
Bursa'daki şifreleme kütüphanesine bakın
https://github.com/MHumm/DelphiEncryptionCompendium
https://github.com/Delphier/TAES
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla
#3
Merhabalar,

Bu konular yardımcı olacaktır sanırım.

https://www.delphican.com/showthread.php?tid=1987
https://www.delphican.com/showthread.php?tid=663
https://www.delphican.com/showthread.php?tid=2757
https://www.delphican.com/showthread.php?tid=1606

Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla
#4
Arkadaşlar sağolun ancak verdiğiniz linklerdeki örneklerin neredeyse hepsini denemiştim ama bir türlü yapamadım. Zaten birçoğu farklı ve bana gerekli olan çözümü vermiyor. Pek de anladığım bir konu değil ama bir proje için gerekti malesef.

Sadece yukarıda yazdığım parametrelere göre (AES-256-ECB) şifreleme yapabilecek denenmiş bir kod paylaşabilirseniz çok sevinirim.
Ne ekersen onu biçersin!  Idea
Cevapla
#5
C# da bu iş çok kolay. C# ile ActiveX dll yazıp şifreleme metodunu çağırsanız olmaz mı? Eğer bulamazsanız, sizin için basit bir dll yazmanıza yardımcı olabilirim.
Cevapla
#6
(10-02-2024, Saat: 11:58)anemos Adlı Kullanıcıdan Alıntı: C# da bu iş çok kolay. C# ile ActiveX dll yazıp şifreleme metodunu çağırsanız olmaz mı? Eğer bulamazsanız, sizin için basit bir dll yazmanıza yardımcı olabilirim.

C# bilmiyorum ama dll konusundaki yardımına hayır diyemem Smile) Olmazsa php ile yapıp Delphi tarafında kullanacağım. Bıktım zaten şu Delphi den 35 yıldır onu ordan şunu burdan alıp duruyoruz Delphican lar kızmasın ama hakkaten gereksiz bir dil ömrümü yedi Smile)
Ne ekersen onu biçersin!  Idea
Cevapla
#7
(10-02-2024, Saat: 12:02)tmrksmt Adlı Kullanıcıdan Alıntı: C# bilmiyorum ama dll konusundaki yardımına hayır diyemem Smile) Olmazsa php ile yapıp Delphi tarafında kullanacağım. Bıktım zaten şu Delphi den 35 yıldır onu ordan şunu burdan alıp duruyoruz Delphican lar kızmasın ama hakkaten gereksiz bir dil ömrümü yedi Smile)

Hem 32, hem de 64 bit dll indirme bağlantısını ekledim. NET 7.0 ile yazılmıştır.



İşin doğrusu Delphi tarafında nasıl çağrılır bilmiyorum. Bilinen şey, dll'de "Create_Object" isminde parametresiz bir stdcall entry point olduğu; bu fonksiyonunda bir class nesnesi döndürdüğüdür. Aşağıda kaynak kodunu paylaştığım imzalar (parametre ve return) ile kullanabilirsiniz.

using System.Runtime.InteropServices;
using System.Text;
using Cr = System.Security.Cryptography;

namespace TMRKSMT
{
   public class Class1
   {
       [DllExport(CallingConvention = CallingConvention.StdCall)]
       public static Class1 Create_Object()
       {
           return new Class1 ();
       }

       public byte[] EncryptCbcSTR1(byte[] iv, byte[] key, string txt)
       {
           Cr.Aes aes = Cr.Aes.Create();
           aes.Key = key;

           byte[] strBytes = Encoding.UTF8.GetBytes(txt);

           return aes.EncryptCbc(strBytes, iv);
       }

       public string EncryptCbcSTR2(byte[] iv, byte[] key, string txt)
       {
           Cr.Aes aes = Cr.Aes.Create();
           aes.Key = key;

           byte[] strBytes = Encoding.UTF8.GetBytes(txt);

           return Encoding.UTF8.GetString(aes.EncryptCbc(strBytes, iv));
       }

       public byte[] EncryptCbcBYT1(byte[] iv, byte[] key, byte[] txt)
       {
           Cr.Aes aes = Cr.Aes.Create();
           aes.Key = key;

           return aes.EncryptCbc(txt, iv);
       }

       public string EncryptCbcBYT2(byte[] iv, byte[] key, byte[] txt)
       {
           Cr.Aes aes = Cr.Aes.Create();
           aes.Key = key;

           return Encoding.UTF8.GetString(aes.EncryptCbc(txt, iv));
       }


       public byte[] DecryptCbcSTR1(byte[] iv, byte[] key, string txt)
       {
           Cr.Aes aes = Cr.Aes.Create();
           aes.Key = key;

           byte[] strBytes = Encoding.UTF8.GetBytes(txt);    

           return aes.DecryptCbc(strBytes, iv);
       }

       public string DecryptCbcSTR2(byte[] iv, byte[] key, string txt)
       {
           Cr.Aes aes = Cr.Aes.Create();
           aes.Key = key;

           byte[] strBytes = Encoding.UTF8.GetBytes(txt);

           return Encoding.UTF8.GetString(aes.DecryptCbc(strBytes, iv));
       }

       public byte[] DecryptCbcBYT1(byte[] iv, byte[] key, byte[] txt)
       {
           Cr.Aes aes = Cr.Aes.Create();
           aes.Key = key;

           return aes.DecryptCbc(txt, iv);
       }

       public string DecryptCbcBYT2(byte[] iv, byte[] key, byte[] txt)
       {
           Cr.Aes aes = Cr.Aes.Create();
           aes.Key = key;

           return Encoding.UTF8.GetString(aes.DecryptCbc(txt, iv));
       }
   }
}


Ek Dosyalar
.zip   TMRKSMT.zip (Dosya Boyutu: 4,46 KB / İndirme Sayısı: 6)
Cevapla
#8
(10-02-2024, Saat: 13:04)anemos Adlı Kullanıcıdan Alıntı:
(10-02-2024, Saat: 12:02)tmrksmt Adlı Kullanıcıdan Alıntı: C# bilmiyorum ama dll konusundaki yardımına hayır diyemem Smile) Olmazsa php ile yapıp Delphi tarafında kullanacağım. Bıktım zaten şu Delphi den 35 yıldır onu ordan şunu burdan alıp duruyoruz Delphican lar kızmasın ama hakkaten gereksiz bir dil ömrümü yedi Smile)

Hem 32, hem de 64 bit dll indirme bağlantısını ekledim. NET 7.0 ile yazılmıştır.



İşin doğrusu Delphi tarafında nasıl çağrılır bilmiyorum. Bilinen şey, dll'de "Create_Object" isminde parametresiz bir stdcall entry point olduğu; bu fonksiyonunda bir class nesnesi döndürdüğüdür. Aşağıda kaynak kodunu paylaştığım imzalar (parametre ve return) ile kullanabilirsiniz.

using System.Runtime.InteropServices;
using System.Text;
using Cr = System.Security.Cryptography;

namespace TMRKSMT
{
   public class Class1
   {
       [DllExport(CallingConvention = CallingConvention.StdCall)]
       public static Class1 Create_Object()
       {
           return new Class1 ();
       }

       public byte[] EncryptCbcSTR1(byte[] iv, byte[] key, string txt)
       {
           Cr.Aes aes = Cr.Aes.Create();
           aes.Key = key;

           byte[] strBytes = Encoding.UTF8.GetBytes(txt);

           return aes.EncryptCbc(strBytes, iv);
       }

       public string EncryptCbcSTR2(byte[] iv, byte[] key, string txt)
       {
           Cr.Aes aes = Cr.Aes.Create();
           aes.Key = key;

           byte[] strBytes = Encoding.UTF8.GetBytes(txt);

           return Encoding.UTF8.GetString(aes.EncryptCbc(strBytes, iv));
       }

       public byte[] EncryptCbcBYT1(byte[] iv, byte[] key, byte[] txt)
       {
           Cr.Aes aes = Cr.Aes.Create();
           aes.Key = key;

           return aes.EncryptCbc(txt, iv);
       }

       public string EncryptCbcBYT2(byte[] iv, byte[] key, byte[] txt)
       {
           Cr.Aes aes = Cr.Aes.Create();
           aes.Key = key;

           return Encoding.UTF8.GetString(aes.EncryptCbc(txt, iv));
       }


       public byte[] DecryptCbcSTR1(byte[] iv, byte[] key, string txt)
       {
           Cr.Aes aes = Cr.Aes.Create();
           aes.Key = key;

           byte[] strBytes = Encoding.UTF8.GetBytes(txt);    

           return aes.DecryptCbc(strBytes, iv);
       }

       public string DecryptCbcSTR2(byte[] iv, byte[] key, string txt)
       {
           Cr.Aes aes = Cr.Aes.Create();
           aes.Key = key;

           byte[] strBytes = Encoding.UTF8.GetBytes(txt);

           return Encoding.UTF8.GetString(aes.DecryptCbc(strBytes, iv));
       }

       public byte[] DecryptCbcBYT1(byte[] iv, byte[] key, byte[] txt)
       {
           Cr.Aes aes = Cr.Aes.Create();
           aes.Key = key;

           return aes.DecryptCbc(txt, iv);
       }

       public string DecryptCbcBYT2(byte[] iv, byte[] key, byte[] txt)
       {
           Cr.Aes aes = Cr.Aes.Create();
           aes.Key = key;

           return Encoding.UTF8.GetString(aes.DecryptCbc(txt, iv));
       }
   }
}

Çok teşekkürler. Deneyeceğim. Emeğine sağlık.
Ne ekersen onu biçersin!  Idea
Cevapla
#9
(09-02-2024, Saat: 18:17)tmrksmt Adlı Kullanıcıdan Alıntı: Bir entegrasyon için bana verilen secret key ile Rijndael - AES şifreleme algoritmasına göre şifrelenmesi gerekiyor. 

Ben de bu konuda dertli biriyim. Ben daha denemedim ama @RAD Coder  arkadaşımız

System.NetEncoding ve
System.Hash
Kütüphanelerini araştırın. Sonra ben şunu yapamıyorum dediğinizde nasıl yapılabileceğine birlikte bakalım.


şeklinde bir öneride bulunmuştu. Sonucu bizimle de paylaşırsanız sevinirim.
WWW
Cevapla
#10
System.NetEncoding ve System.Hash ozetleme icin kullanilir, sifreleme icermiyor. github'da bir cok proje var, neden onlari denemiyorsunuz?
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  SQL Table Type parametre gecisi hakkında (Çözüldü) adelphiforumz 1 154 09-04-2026, Saat: 15:53
Son Yorum: adelphiforumz
  Video Oynatma Hakkında adelphiforumz 7 844 17-12-2025, Saat: 07:36
Son Yorum: mrmarman
  nduWlanAPI Kullanımı hakkında nurah 3 806 09-09-2025, Saat: 09:33
Son Yorum: RAD Coder
  SuperObject dosyaları hakkında adelphiforumz 2 622 18-06-2025, Saat: 11:02
Son Yorum: engerex
  Edge Browser Hakkında Yardım. glagher 6 3.274 14-06-2025, Saat: 23:40
Son Yorum: maxpaynen



Konuyu Okuyanlar: 1 Ziyaretçi