Yorumları: 45
Konuları: 11
Kayıt Tarihi: 29-09-2023
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 30 Başlangıç
27-06-2024, Saat: 10:00
Merhaba, iyi forumlar
Delphi 12'de bir Win32 projem var ve MacOS'a derlemeye çalışıyorum. Bir lisans dosyam var ve bu dosyayı Windowsta çalıştırdığımda Decrypt-Encrypt işlemleri başarılı çalışırken; MacOS'a geldiğim zaman hata veriyor ve Texti çözümleyemiyor.
Bunun için hazır bir kod vs. var mı bilmiyorum? Daha önce bu işlemleri yapmış olan birisi varsa yardımcı olabilirse çok memnun olurum. Stackowerflowda gezdim fakat çok işe yarar bir şey bulamadım.
Encrypt kodum;
class function TCryptionHelper.EncryptText(pKey: string; AText: string): string;
var
Source: TMemoryStream;
Dest: TMemoryStream;
Size: integer;
Key: TAESKey128;
str: ansistring;
strTemp: TStringList;
begin
try
Result := '';
if Trim(pKey).IsEmpty then
pKey := AESKey;
AText := Trim(AText);
Source := TMemoryStream.Create();
Dest := TMemoryStream.Create();
strTemp := TStringList.Create;
try
// Save data to memory stream...
Source.Write(PAnsiChar(AnsiString(AText))^, length(AText));
Source.Position := 0;
Size := Source.Size;
Dest.WriteBuffer(Size, SizeOf(Size));
// Prepare key...
FillChar(Key, SizeOf(Key), 0);
Move(PAnsiChar(AnsiString(pKey))^, Key, Min(SizeOf(Key), Length(pKey)));
// Start encryption...
EncryptAESStreamECB( Source, 0, Key, Dest );
//Label_Time.Caption := IntToStr(Stop - Start) + ' ms';
// Display encrypted text using hexadecimals...
Dest.Position := 0;
setlength(str, Dest.Size);
Dest.Read(PAnsiChar(str)^, Dest.Size);
strTemp.Text := StringToHex( str );
Result := strTemp.Text;
finally
Source.Free;
Dest.Free;
strTemp.Free;
end;
except on E: Exception do
begin
Result := 'Encrypt Error: ' + E.ToString;
end;
end;
end;
Decrypt kodum;
class function TCryptionHelper.DecryptText(pKey: string; pEncryptedText: string): string;
var
Source: TMemoryStream;
Dest: TMemoryStream;
Size: integer;
Key: TAESKey128;
str: AnsiString;
decryptedText: string;
begin
Result := '';
try
if Trim(pKey).IsEmpty then
pKey := AESKey;
pEncryptedText := Trim(pEncryptedText);
Source := TMemoryStream.Create( );
Dest := TMemoryStream.Create( );
try
str := HexToString( pEncryptedText );
Source.Write(PAnsiChar(str)^, length(str));
Source.Position := 0;
// Start decryption...
Size := Source.Size;
Source.ReadBuffer(Size, SizeOf(Size));
// Prepare key...
FillChar(Key, SizeOf(Key), 0);
Move(PAnsiChar(AnsiString(pKey))^, Key, Min(SizeOf(Key), Length(pKey)));
// Decrypt now...
DecryptAESStreamECB(Source, Source.Size - Source.Position, Key, Dest);
// Display unencrypted text...
Dest.position := 0;
SetLength(str, dest.Size);
Dest.Read(PAnsiChar(str)^, dest.Size);
decryptedText := str;
Result := decryptedText;
finally
Source.Free;
Dest.Free;
end;
except on E: Exception do
begin
Result := 'Decrypt Error: ' + E.ToString;
end;
end;
end;
Yorumları: 893
Konuları: 24
Kayıt Tarihi: 22-07-2016
Aktif Kullandığınız Delphi Sürümü:
- Delphi 12
- Delphi 11
- Delphi 10.4
- Delphi 10.3
- Delphi 10.2
- Delphi 10.1
- Delphi 10
Rep Puanı: 4.578 Uzman
Uygulamanız Windows ve macOS hedef platformlarında çalıyorsa, muhtemelen FMX mimarisinde geliştiriyorsunuz.
Bu nedenle konuyu Genel Programlama bölümünden, Mobil Platform - FireMonkey (FMX) bölümüne taşıdık.
Sorunun daha hızlı çözümü adına, EncryptAESStreamECB ve DecryptAESStreamECB metodlarınızın FMX mimarisine uygun yazılıp, yazılmadığını kontrol edin.
FMX için geliştirilmiş ise oluşan hata kodlarını paylaşın yardımcı olmaya çalışalım.
Begin : = end / 2;
Yorumları: 45
Konuları: 11
Kayıt Tarihi: 29-09-2023
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 30 Başlangıç
27-06-2024, Saat: 11:27
(Son Düzenleme: 27-06-2024, Saat: 11:27, Düzenleyen: kajmerantime.)
(27-06-2024, Saat: 10:51)RAD Coder Adlı Kullanıcıdan Alıntı: Uygulamanız Windows ve macOS hedef platformlarında çalıyorsa, muhtemelen FMX mimarisinde geliştiriyorsunuz.
Bu nedenle konuyu Genel Programlama bölümünden, Mobil Platform - FireMonkey (FMX) bölümüne taşıdık.
Sorunun daha hızlı çözümü adına, EncryptAESStreamECB ve DecryptAESStreamECB metodlarınızın FMX mimarisine uygun yazılıp, yazılmadığını kontrol edin.
FMX için geliştirilmiş ise oluşan hata kodlarını paylaşın yardımcı olmaya çalışalım.
Yanlışım için üzgünüm. Evet FMX mimarisinde geliştiriyoruz. Android uygulaması da mevcut. Genel olarak aldığım hata attığım fonksiyonların çalışmamasından kaynaklı sanırım. Yani debug attığımda fonksiyonları geçiyor fakat text'e baktığımda şifreyi düzgün çevirmemiş oluyor. Bundan kaynaklı hatalar alıyorum.
Yorumları: 893
Konuları: 24
Kayıt Tarihi: 22-07-2016
Aktif Kullandığınız Delphi Sürümü:
- Delphi 12
- Delphi 11
- Delphi 10.4
- Delphi 10.3
- Delphi 10.2
- Delphi 10.1
- Delphi 10
Rep Puanı: 4.578 Uzman
Kullandığınız kütüphane FMX mimarisine göre yazılmamıştır.
Farklı bir AES kütüphanesi kullanın.
Ben AES için OrangeUI kütüphanesini kullanıyorum.
Begin : = end / 2;
Yorumları: 45
Konuları: 11
Kayıt Tarihi: 29-09-2023
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 30 Başlangıç
(27-06-2024, Saat: 11:55)RAD Coder Adlı Kullanıcıdan Alıntı: Kullandığınız kütüphane FMX mimarisine göre yazılmamıştır.
Farklı bir AES kütüphanesi kullanın.
Ben AES için OrangeUI kütüphanesini kullanıyorum.
OrangeUI kütüphanesinin AES işlemlerinde kullanılabildiğini bilmiyordum. İnternette de bir kod bulamadım bununla alakalı. Bir örnek vs. mevcut mu acaba?
DCPCrypt kütüphanesine baktım onunda Delphi12'de çalışacak kadar güncelini bulamadım maalesef.
Yorumları: 893
Konuları: 24
Kayıt Tarihi: 22-07-2016
Aktif Kullandığınız Delphi Sürümü:
- Delphi 12
- Delphi 11
- Delphi 10.4
- Delphi 10.3
- Delphi 10.2
- Delphi 10.1
- Delphi 10
Rep Puanı: 4.578 Uzman
28-06-2024, Saat: 11:52
(Son Düzenleme: 28-06-2024, Saat: 11:56, Düzenleyen: RAD Coder.)
Aşağıdaki metodlarla yapabilirsiniz.
//Encrypt
AESEncryptStrToBase64('Şifrelenecek metin', 'anahtarınız', TEncoding.Unicode, TEncoding.UTF8, TKeyBit.kb128, 'başlangıç vektör değeri'{IV Key},
TPaddingMode.pmPKCS5or7RandomPadding, True, rlCRLF, rlCRLF, Nil);
//Decrypt
AESDecryptStrFromBase64('Çözülecek metin', 'anahtarınız', TEncoding.Unicode, TEncoding.UTF8, TKeyBit.kb128, 'başlangıç vektör değeri'{IV Key},
TPaddingMode.pmPKCS5or7RandomPadding, True, rlCRLF, rlCRLF, Nil);
Kurulum klasöründe, demo uygulaması var.
OrangeUI FMX 2.3 For D12 VIP\OrangeProjectCommon\FlyUtilsEncrypt\Demos\AES
Begin : = end / 2;
Yorumları: 835
Konuları: 40
Kayıt Tarihi: 11-11-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 4.147 Uzman
(27-06-2024, Saat: 10:00)kajmerantime Adlı Kullanıcıdan Alıntı: Merhaba, iyi forumlar
Delphi 12'de bir Win32 projem var ve MacOS'a derlemeye çalışıyorum. Bir lisans dosyam var ve bu dosyayı Windowsta çalıştırdığımda Decrypt-Encrypt işlemleri başarılı çalışırken; MacOS'a geldiğim zaman hata veriyor ve Texti çözümleyemiyor.
Bunun için hazır bir kod vs. var mı bilmiyorum? Daha önce bu işlemleri yapmış olan birisi varsa yardımcı olabilirse çok memnun olurum. Stackowerflowda gezdim fakat çok işe yarar bir şey bulamadım.
Encrypt kodum;
class function TCryptionHelper.EncryptText(pKey: string; AText: string): string;
var
Source: TMemoryStream;
Dest: TMemoryStream;
Size: integer;
Key: TAESKey128;
str: ansistring;
strTemp: TStringList;
begin
try
Result := '';
if Trim(pKey).IsEmpty then
pKey := AESKey;
AText := Trim(AText);
Source := TMemoryStream.Create();
Dest := TMemoryStream.Create();
strTemp := TStringList.Create;
try
// Save data to memory stream...
Source.Write(PAnsiChar(AnsiString(AText))^, length(AText));
Source.Position := 0;
Size := Source.Size;
Dest.WriteBuffer(Size, SizeOf(Size));
// Prepare key...
FillChar(Key, SizeOf(Key), 0);
Move(PAnsiChar(AnsiString(pKey))^, Key, Min(SizeOf(Key), Length(pKey)));
// Start encryption...
EncryptAESStreamECB( Source, 0, Key, Dest );
//Label_Time.Caption := IntToStr(Stop - Start) + ' ms';
// Display encrypted text using hexadecimals...
Dest.Position := 0;
setlength(str, Dest.Size);
Dest.Read(PAnsiChar(str)^, Dest.Size);
strTemp.Text := StringToHex( str );
Result := strTemp.Text;
finally
Source.Free;
Dest.Free;
strTemp.Free;
end;
except on E: Exception do
begin
Result := 'Encrypt Error: ' + E.ToString;
end;
end;
end;
Decrypt kodum;
class function TCryptionHelper.DecryptText(pKey: string; pEncryptedText: string): string;
var
Source: TMemoryStream;
Dest: TMemoryStream;
Size: integer;
Key: TAESKey128;
str: AnsiString;
decryptedText: string;
begin
Result := '';
try
if Trim(pKey).IsEmpty then
pKey := AESKey;
pEncryptedText := Trim(pEncryptedText);
Source := TMemoryStream.Create( );
Dest := TMemoryStream.Create( );
try
str := HexToString( pEncryptedText );
Source.Write(PAnsiChar(str)^, length(str));
Source.Position := 0;
// Start decryption...
Size := Source.Size;
Source.ReadBuffer(Size, SizeOf(Size));
// Prepare key...
FillChar(Key, SizeOf(Key), 0);
Move(PAnsiChar(AnsiString(pKey))^, Key, Min(SizeOf(Key), Length(pKey)));
// Decrypt now...
DecryptAESStreamECB(Source, Source.Size - Source.Position, Key, Dest);
// Display unencrypted text...
Dest.position := 0;
SetLength(str, dest.Size);
Dest.Read(PAnsiChar(str)^, dest.Size);
decryptedText := str;
Result := decryptedText;
finally
Source.Free;
Dest.Free;
end;
except on E: Exception do
begin
Result := 'Decrypt Error: ' + E.ToString;
end;
end;
end;
Merhabalar,
https://github.com/PassByYou888/CoreCipher/tree/master
İncelermisiniz lütfen.
Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
Yorumları: 45
Konuları: 11
Kayıt Tarihi: 29-09-2023
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 30 Başlangıç
(28-06-2024, Saat: 13:52)hi_selamlar Adlı Kullanıcıdan Alıntı: (27-06-2024, Saat: 10:00)kajmerantime Adlı Kullanıcıdan Alıntı: Merhaba, iyi forumlar
Delphi 12'de bir Win32 projem var ve MacOS'a derlemeye çalışıyorum. Bir lisans dosyam var ve bu dosyayı Windowsta çalıştırdığımda Decrypt-Encrypt işlemleri başarılı çalışırken; MacOS'a geldiğim zaman hata veriyor ve Texti çözümleyemiyor.
Bunun için hazır bir kod vs. var mı bilmiyorum? Daha önce bu işlemleri yapmış olan birisi varsa yardımcı olabilirse çok memnun olurum. Stackowerflowda gezdim fakat çok işe yarar bir şey bulamadım.
Encrypt kodum;
class function TCryptionHelper.EncryptText(pKey: string; AText: string): string;
var
Source: TMemoryStream;
Dest: TMemoryStream;
Size: integer;
Key: TAESKey128;
str: ansistring;
strTemp: TStringList;
begin
try
Result := '';
if Trim(pKey).IsEmpty then
pKey := AESKey;
AText := Trim(AText);
Source := TMemoryStream.Create();
Dest := TMemoryStream.Create();
strTemp := TStringList.Create;
try
// Save data to memory stream...
Source.Write(PAnsiChar(AnsiString(AText))^, length(AText));
Source.Position := 0;
Size := Source.Size;
Dest.WriteBuffer(Size, SizeOf(Size));
// Prepare key...
FillChar(Key, SizeOf(Key), 0);
Move(PAnsiChar(AnsiString(pKey))^, Key, Min(SizeOf(Key), Length(pKey)));
// Start encryption...
EncryptAESStreamECB( Source, 0, Key, Dest );
//Label_Time.Caption := IntToStr(Stop - Start) + ' ms';
// Display encrypted text using hexadecimals...
Dest.Position := 0;
setlength(str, Dest.Size);
Dest.Read(PAnsiChar(str)^, Dest.Size);
strTemp.Text := StringToHex( str );
Result := strTemp.Text;
finally
Source.Free;
Dest.Free;
strTemp.Free;
end;
except on E: Exception do
begin
Result := 'Encrypt Error: ' + E.ToString;
end;
end;
end;
Decrypt kodum;
class function TCryptionHelper.DecryptText(pKey: string; pEncryptedText: string): string;
var
Source: TMemoryStream;
Dest: TMemoryStream;
Size: integer;
Key: TAESKey128;
str: AnsiString;
decryptedText: string;
begin
Result := '';
try
if Trim(pKey).IsEmpty then
pKey := AESKey;
pEncryptedText := Trim(pEncryptedText);
Source := TMemoryStream.Create( );
Dest := TMemoryStream.Create( );
try
str := HexToString( pEncryptedText );
Source.Write(PAnsiChar(str)^, length(str));
Source.Position := 0;
// Start decryption...
Size := Source.Size;
Source.ReadBuffer(Size, SizeOf(Size));
// Prepare key...
FillChar(Key, SizeOf(Key), 0);
Move(PAnsiChar(AnsiString(pKey))^, Key, Min(SizeOf(Key), Length(pKey)));
// Decrypt now...
DecryptAESStreamECB(Source, Source.Size - Source.Position, Key, Dest);
// Display unencrypted text...
Dest.position := 0;
SetLength(str, dest.Size);
Dest.Read(PAnsiChar(str)^, dest.Size);
decryptedText := str;
Result := decryptedText;
finally
Source.Free;
Dest.Free;
end;
except on E: Exception do
begin
Result := 'Decrypt Error: ' + E.ToString;
end;
end;
end;
Merhabalar,
https://github.com/PassByYou888/CoreCipher/tree/master
İncelermisiniz lütfen.
Kolay gelsin.
Tavsiyeniz için teşekkür ederim. Repoyu indirip derlerken bir çok hata alıyorum. DCPCrypt kütüphanesi kullanarak işlem yapmaya çalışıyorum fakat yinede bir sonuç alamadım. macOS ve IOS'ta derleyeceğim için UTF-8 ile şifrelemem gerekiyor. Şu an windows ve android için kullandığımız lisans dosyamız ansistring şeklinde şifrelenmiş. Durum karışık açıkçası pek bir fikrim yok.
Yorumları: 45
Konuları: 11
Kayıt Tarihi: 29-09-2023
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 30 Başlangıç
(28-06-2024, Saat: 11:52)RAD Coder Adlı Kullanıcıdan Alıntı: Aşağıdaki metodlarla yapabilirsiniz.
//Encrypt
AESEncryptStrToBase64('Şifrelenecek metin', 'anahtarınız', TEncoding.Unicode, TEncoding.UTF8, TKeyBit.kb128, 'başlangıç vektör değeri'{IV Key},
TPaddingMode.pmPKCS5or7RandomPadding, True, rlCRLF, rlCRLF, Nil);
//Decrypt
AESDecryptStrFromBase64('Çözülecek metin', 'anahtarınız', TEncoding.Unicode, TEncoding.UTF8, TKeyBit.kb128, 'başlangıç vektör değeri'{IV Key},
TPaddingMode.pmPKCS5or7RandomPadding, True, rlCRLF, rlCRLF, Nil);
Kurulum klasöründe, demo uygulaması var.
OrangeUI FMX 2.3 For D12 VIP\OrangeProjectCommon\FlyUtilsEncrypt\Demos\AES
Android için olan lisans dosyam ansistring formatıyla şifrelenmiş. MacOS Ansi desteklemiyor, UTF-8 destekliyor sanırım. Bu lisans içerisindeki ansi şifreyi deşifre edip utf-8 formatında şifrelemem gerekiyor. Bu konuda olan düşüncem yanlış mı? Demoyu açtım fakat decrypt yapamıyor.
Yorumları: 893
Konuları: 24
Kayıt Tarihi: 22-07-2016
Aktif Kullandığınız Delphi Sürümü:
- Delphi 12
- Delphi 11
- Delphi 10.4
- Delphi 10.3
- Delphi 10.2
- Delphi 10.1
- Delphi 10
Rep Puanı: 4.578 Uzman
05-07-2024, Saat: 10:13
(Son Düzenleme: 05-07-2024, Saat: 10:14, Düzenleyen: RAD Coder.)
(05-07-2024, Saat: 10:01)kajmerantime Adlı Kullanıcıdan Alıntı: (28-06-2024, Saat: 11:52)RAD Coder Adlı Kullanıcıdan Alıntı: Aşağıdaki metodlarla yapabilirsiniz.
//Encrypt
AESEncryptStrToBase64('Şifrelenecek metin', 'anahtarınız', TEncoding.Unicode, TEncoding.UTF8, TKeyBit.kb128, 'başlangıç vektör değeri'{IV Key},
TPaddingMode.pmPKCS5or7RandomPadding, True, rlCRLF, rlCRLF, Nil);
//Decrypt
AESDecryptStrFromBase64('Çözülecek metin', 'anahtarınız', TEncoding.Unicode, TEncoding.UTF8, TKeyBit.kb128, 'başlangıç vektör değeri'{IV Key},
TPaddingMode.pmPKCS5or7RandomPadding, True, rlCRLF, rlCRLF, Nil);
Kurulum klasöründe, demo uygulaması var.
OrangeUI FMX 2.3 For D12 VIP\OrangeProjectCommon\FlyUtilsEncrypt\Demos\AES
Android için olan lisans dosyam ansistring formatıyla şifrelenmiş. MacOS Ansi desteklemiyor, UTF-8 destekliyor sanırım. Bu lisans içerisindeki ansi şifreyi deşifre edip utf-8 formatında şifrelemem gerekiyor. Bu konuda olan düşüncem yanlış mı? Demoyu açtım fakat decrypt yapamıyor.
Şöyle deneyin.
AESDecryptStrFromBase64('Çözülecek metin', 'anahtarınız', TEncoding.ANSI, TEncoding.ANSI, TKeyBit.kb128, 'başlangıç vektör değeri'{IV Key},
TPaddingMode.pmPKCS5or7RandomPadding, True, rlCRLF, rlCRLF, Nil);
3. Parametredeki encoding, dönecek değerin kodlamasını gösterir.
4. parametredeki encoding ise anahtar değerinin kodlamasıdır.
Bunları değiştirerek istediğiniz doğru sonucu elde edebilirsiniz.
Begin : = end / 2;
|