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.
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.
(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 ) 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 )
10-02-2024, Saat: 13:04 (Son Düzenleme: 10-02-2024, Saat: 13:26, Düzenleyen: anemos.
Sebep: Dll derlemesindeki entry point eksik adım nedeniyle
)
(10-02-2024, Saat: 12:02)tmrksmt Adlı Kullanıcıdan Alıntı: C# bilmiyorum ama dll konusundaki yardımına hayır diyemem ) 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 )
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));
}
}
}
(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 ) 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 )
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));
}
}
}
(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.