Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
HMAC-SHA256 Şifreleme Hakkında Yardım
#1
Merhaba,

PayTr ile PayLink ödeme sistemini yazılımıma entegre etmek istiyorum ama bana verilen teknik dökümandaki gibi HMAC-SHA256 şifreleme algoritmasını yapamadım bir türlü. Sürekli "Hata : paytr_token gonderilmedi veya gecersiz" hatası alıyorum. Örnekte verilen kod bloğu ;

paytr_token = base64.b64encode(hmac.new(merchant_key, hash_str.encode(), hashlib.sha256).digest())

Dökümanın bütün hali

RAD Studio XE7 kullanıyorum nasıl uyarlıyabilirim?
Cevapla
#2
indyhashsha veya system.hash.thashsha2 kütüphaneleri var. Bunları araştırın.

Ayrıca burada
https://github.com/paolo-rossi/delphi-jo...g.HMAC.pas
Json web token jwt için oluşturulan kütüphane var. Zaten sizden istenileni yapıyor olmalı.

Linkteki kodda gördüğüm kadarıyla Delphi 10 ve üzeri system.hash kullanıyor düşük sürümlerde indy bileşenini kullanıyor.
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla
#3
Merhaba,

hazır bileşenini zamanında yazmıştım.
https://github.com/halilhanbadem/delphi-hb-components
kisisel_logo_dark.png
WWW
Cevapla
#4
(19-08-2022, Saat: 09:25)Halil Han BADEM Adlı Kullanıcıdan Alıntı: Merhaba,

hazır bileşenini zamanında yazmıştım.
https://github.com/halilhanbadem/delphi-hb-components

Çok teşşekür ederim. Yalnız bu işlemi compennet kurmadan yapmanın bir yolu yok mu?
Cevapla
#5
(19-08-2022, Saat: 11:38)glagher Adlı Kullanıcıdan Alıntı:
(19-08-2022, Saat: 09:25)Halil Han BADEM Adlı Kullanıcıdan Alıntı: Merhaba,

hazır bileşenini zamanında yazmıştım.
https://github.com/halilhanbadem/delphi-hb-components

Çok teşşekür ederim. Yalnız bu işlemi compennet kurmadan yapmanın bir yolu yok mu?

OpenSource zaten. İçerisinden kodları alıp kullanın.
kisisel_logo_dark.png
WWW
Cevapla
#6
(19-08-2022, Saat: 11:43)Halil Han BADEM Adlı Kullanıcıdan Alıntı:
(19-08-2022, Saat: 11:38)glagher Adlı Kullanıcıdan Alıntı: Çok teşşekür ederim. Yalnız bu işlemi compennet kurmadan yapmanın bir yolu yok mu?

OpenSource zaten. İçerisinden kodları alıp kullanın.

SHA256 şifrelemeyi yaptım ama sürekli api tarafında geçersiz token hatası alıyorum. Paytr ile görüştüm delphi sürümünüzde sıkıntı var dedi.  Çözüm bulamadım bir türlü
Cevapla
#7
  var Token: String :=
   TBase64Encoding.Base64.Encode(
     THashSHA2.GetHMAC(
       'merhaba delphi developer',  // data
       'delphi', //  key
       THashSHA2.TSHA2Version.SHA256
     )
   ).Replace(#13, '')
       .Replace(#10, '');

Kodunuzu birde yukarıdaki şekilde derleyip denemenizi önerebilirim. Umarım sorunu çözmeye yardımcı olur.
Delphi ile PHP hash_hmac metod doğrulamasını https://beautifytools.com/hmac-generator.php adresi üzerinden kontrol edebilirisiniz. Ayrıca Replace metotları ile #13 ve #10 karakterlerini elimine ediyorum. Bunun nedeni, TBase64Encoding sınıfına ait Encode metotu icrası akabinde oluşturulan dize değeri 80 karakterden daha uzunsa, Delphi bunu MIME standartına uygun hale getirmeye çalışıyor.
Cevapla
#8
(23-08-2022, Saat: 01:42)delphi.developer Adlı Kullanıcıdan Alıntı:
  var Token: String :=
   TBase64Encoding.Base64.Encode(
     THashSHA2.GetHMAC(
       'merhaba delphi developer',  // data
       'delphi', //  key
       THashSHA2.TSHA2Version.SHA256
     )
   ).Replace(#13, '')
       .Replace(#10, '');

Kodunuzu birde yukarıdaki şekilde derleyip denemenizi önerebilirim. Umarım sorunu çözmeye yardımcı olur.
Delphi ile PHP hash_hmac metod doğrulamasını https://beautifytools.com/hmac-generator.php adresi üzerinden kontrol edebilirisiniz. Ayrıca Replace metotları ile #13 ve #10 karakterlerini elimine ediyorum. Bunun nedeni, TBase64Encoding sınıfına ait Encode metotu icrası akabinde oluşturulan dize değeri 80 karakterden daha uzunsa, Delphi bunu MIME standartına uygun hale getirmeye çalışıyor.
XE7 kullanıyorum. "THashSHA2.GetHMAC" bölümünde hata veriyor. İnternetten araştırdım kütüphanesi "system.Hash" ama XE7 de tanımlı değilmiş. xe 10.1 den sonra geliyormuş. XE7 için sha256 şifrelemeyi nasıl yapabilirim?
Cevapla
#9
TMS Cryptography Pack  linki üzerinden bileşen kurulumunu yapın. Paket kurulumu sonrasında TSHA2Hash bileşenini formunuza alın. uses bölümüne MiscObj sınıfı ekleyin. Ardından aşağıdaki kod bloğunu kendi key ve anahtarlarınıza göre değiştirerek tekrar deneme yapın. En azından sorunun TokenKey noktasında olduğunun hızlıca tespiti yapılmış olur.

  SHA2Hash1.hashSizeBits := 256;
 SHA2Hash1.outputFormat := Base64;
 var TokenKey: String :=
   SHA2Hash1.HMAC('merhaba delphi developer', 'delphi');
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  SQL Table Type parametre gecisi hakkında (Çözüldü) adelphiforumz 1 397 09-04-2026, Saat: 15:53
Son Yorum: adelphiforumz
  Video Oynatma Hakkında adelphiforumz 7 1.088 17-12-2025, Saat: 07:36
Son Yorum: mrmarman
  nduWlanAPI Kullanımı hakkında nurah 3 1.076 09-09-2025, Saat: 09:33
Son Yorum: RAD Coder
  AES Şifreleme Hakkında tmrksmt 25 7.086 06-09-2025, Saat: 22:12
Son Yorum: delphi.developer
  SuperObject dosyaları hakkında adelphiforumz 2 796 18-06-2025, Saat: 11:02
Son Yorum: engerex



Konuyu Okuyanlar: 1 Ziyaretçi