|
27.04.2007 | 03:05
| #1
Garanti Bankası sanal POS için yeni 3D sistemine geçti, bizim de dünyamız şaştı
Herşeyi hallettik, ama formdan SHA1 değeri üretmeyi başaramadık, durum şu şekilde;Formda <form name="pay_form" action="https://ccpos.garanti.com.tr/servlet/gar3Dgate" method="post" > <input type="hidden" name="clientid" value="123456"> <input type="hidden" name="oid" value="zr1mwak"> <input type="hidden" name="amount" value="5.00"> <input type="hidden" name="okUrl" value="https://www.domain.com/tr/web/okurl.ASP" > <input type="hidden" name="failUrl" value="https://www.domain.com/tr/web/failurl.ASP" > <input type="hidden" name="storetype" value="3d" > <input type="hidden" name="islemtipi" value="Auth" > <input type="hidden" name="firmaadi" value="Deneme Firması"> <input type="hidden" name="rnd" value="kwrma06AiD" > <input type="hidden" name="hash" value="BURAYI_HALLEDEMEDİM" > <input type="hidden" name="taksit" value="1"> <input type="hidden" name="lang" value="tr"> satırları var, halledemediğim kısım yazdığım gibi hash kısmı. Yolladıkları pdf dökümanında; HASH Güvenlik kontrolü için üretilen SHA1 değeri. SHA1(clientid + oid + amount + okUrl + failUrl + islemtipi + taksit + rnd + işyerianahtarı) gibi bir bilgi var. clientid, oid, amount, okUrl, failUrl, islemtipi, taksit, rnd değerleri formda hidden olarak mevcut. işyerianahtarı bilgisini de 123456 olarak verdiler. Şimdi benim elimdeki bu bilgileri yan yana yazıp (veya pdf'de yazdıkları gibi araya + koyup) ortaya çıkacak yeni karakter dizisini SHA1 ile kripto edilmiş bir değere çevirmem gerekiyor. internet'te epeyce araştırdım, hemen hemen tüm yazılanlar ASP.NET üzerine, .NET ile bu değer dahili fonksiyon olarak gelmiş ve server tarafından üretiliyormuş. Ama sitemiz bildiğimiz klasik ASP, NET ile hiçbir ilgisi yok, bizim de NET ile hiçbir bilgimiz yok. ASP ile bu işin nasıl yapılacağını bilen varmı, gerekirse komponent de alabiliriz. İlginize şimdiden teşekkürler. |
|
| Alıntı yap |
|
Üyelik Tarihi: 13.03.2007
Mesaj: 24
|
27.04.2007 | 05:55
| #2
JavaScript ile yazılmış bir fonksiyon :
http://forums.aspfree.com/code-bank-...ash-82166.html Burada da bir sha1 hash fonksiyonu var. http://fisheye1.cenqua.com/browse/of...ha1.asp?r=MAIN Kod:
169 Function sha1_Hash(pStrMessage)
170 Dim lLngLen, lBytLenW, lLngTempWordWAry, lLngNumBlocks, lLngBlock, lIntT, lBytTempAry
171 Dim lVarWordWAry(79), lVarWordKAry(3)
172 Dim lStrBlockText, lStrWordText, lStrPadMessage
173 Dim lBytWordH0Ary, lBytWordH1Ary, lBytWordH2Ary, lBytWordH3Ary, lBytWordH4Ary
174 Dim lBytWordAAry, lBytWordBAry, lBytWordCAry, lBytWordDAry, lBytWordEAry, lBytWordFAry
175
176 lLngLen = Len(cstr(pStrMessage))
177
178 lBytLenW = DoubleToWord(CDbl(lLngLen) * 8)
179 lStrPadMessage = pStrMessage & Chr(128) & String((128 - (lLngLen Mod 64) - 9) Mod 64, Chr(0)) & String(4, Chr(0)) & Chr(lBytLenW(0)) & Chr(lBytLenW(1)) & Chr(lBytLenW(2)) & Chr(lBytLenW(3))
180 lLngNumBlocks = Len(lStrPadMessage) / 64
181
182 lVarWordKAry(0) = HexToWord("5A827999")
183 lVarWordKAry(1) = HexToWord("6ED9EBA1")
184 lVarWordKAry(2) = HexToWord("8F1BBCDC")
185 lVarWordKAry(3) = HexToWord("CA62C1D6")
186 lBytWordH0Ary = HexToWord("67452301")
187 lBytWordH1Ary = HexToWord("EFCDAB89")
188 lBytWordH2Ary = HexToWord("98BADCFE")
189 lBytWordH3Ary = HexToWord("10325476")
190 lBytWordH4Ary = HexToWord("C3D2E1F0")
191
192 For lLngBlock = 0 To lLngNumBlocks - 1
193
194 lStrBlockText = Mid(lStrPadMessage, (lLngBlock * 64) + 1, 64)
195
196 For lIntT = 0 To 15
197
198 lStrWordText = Mid(lStrBlockText, (lIntT * 4) + 1, 4)
199 lVarWordWAry(lIntT) = Array(Asc(Mid(lStrWordText, 1, 1)), Asc(Mid(lStrWordText, 2, 1)), Asc(Mid(lStrWordText, 3, 1)), Asc(Mid(lStrWordText, 4, 1)))
200
201 Next
202
203 For lIntT = 16 To 79
204
205 lVarWordWAry(lIntT) = CircShiftLeftW(XorW(XorW(XorW(lVarWordWAry(lIntT - 3), lVarWordWAry(lIntT - 8)), lVarWordWAry(lIntT - 14)), lVarWordWAry(lIntT - 16)), 1)
206
207 Next
208
209 lBytWordAAry = lBytWordH0Ary
210 lBytWordBAry = lBytWordH1Ary
211 lBytWordCAry = lBytWordH2Ary
212 lBytWordDAry = lBytWordH3Ary
213 lBytWordEAry = lBytWordH4Ary
214
215 For lIntT = 0 To 79
216
217 lBytWordFAry = F(lIntT, lBytWordBAry, lBytWordCAry, lBytWordDAry)
218 lBytTempAry = AddW(AddW(AddW(AddW(CircShiftLeftW(lBytWordAAry, 5), lBytWordFAry), lBytWordEAry), lVarWordWAry(lIntT)), lVarWordKAry(lIntT \ 20))
219 lBytWordEAry = lBytWordDAry
220 lBytWordDAry = lBytWordCAry
221 lBytWordCAry = CircShiftLeftW(lBytWordBAry, 30)
222 lBytWordBAry = lBytWordAAry
223 lBytWordAAry = lBytTempAry
224
225 Next
226
227 lBytWordH0Ary = AddW(lBytWordH0Ary, lBytWordAAry)
228 lBytWordH1Ary = AddW(lBytWordH1Ary, lBytWordBAry)
229 lBytWordH2Ary = AddW(lBytWordH2Ary, lBytWordCAry)
230 lBytWordH3Ary = AddW(lBytWordH3Ary, lBytWordDAry)
231 lBytWordH4Ary = AddW(lBytWordH4Ary, lBytWordEAry)
232
233 Next
234
235 sha1_Hash = WordToHex(lBytWordH0Ary) & WordToHex(lBytWordH1Ary) & WordToHex(lBytWordH2Ary) & WordToHex(lBytWordH3Ary) & WordToHex(lBytWordH4Ary)
236
237 End Function
http://www.example-code.com/asp/Sha1String.asp Kolay Gelsin. |
|
__________________
plustr.com |
|
| Alıntı yap |
|
26.07.2007 | 11:55
| #3
Bugün ASP ile hash hesaplanmasına benimde ihtiyacım oldu @xedition verdiğin ilk örnek işe yarıyor, teşekkür ederim fakat garantinin yeni 3Dsi için yeterli değil. Ek olarak kodun base64 e çevrilmesi gerekiyor. Onun için ise aşağıdaki fonksiyonu kullanabilirsiniz.
PHP Code:
|
|
| Alıntı yap |
|
Üyelik Tarihi: 12.04.2008
Mesaj: 3
|
13.04.2008 | 16:27
| #4
|
|
Mesaj YILDIRIM22 tarafından 14.04.2008 (04:48) yeniden düzenlendi. |
|
| Alıntı yap |
Zoque'a hoşgeldiniz!