Neden SHA1 uyan değil mi?

5 Cevap php

Ben geçen sefer yeterince spesifik olduğunu sanmıyorum. İşte başlıyoruz:

Ben bir onaltılık dize var:

742713478fb3c36e014d004100440041004 e0041004e00000060f347d15798c9010060 6b899c5a98c9014d007900470072006f007 500700000002f0000001f7691944b9a3306 295fb5f1f57ca52090d35b50060606060606

Son 20 bayt (teorik olarak) ilk bölümü (- 20 bayt tam dize) bir SHA1 Hash içermelidir. Ama benim için eşleşmiyor.

PHP ile bunu yapmak için çalışıyorum, ama hayır şans. Eğer bir maç alabilir miyim?

Ticket:

742713478fb3c36e014d004100 440041004e0041004e00000060 f347d15798c90100606b899c5a 98c9014d007900470072006f00 7500700000002f0000001f7691944b9a

sha1 hash of ticket appended to original:

3306295fb5f1f57ca52090d35b50060606060606

My sha1 hash of ticket:

b6ecd613698ac3533b5f853bf22f6eb4afb94239

Here's what is in the ticket and how it's being stored. FWIW, I can pull out username, etc, and spot the various delimiters. http://www.codeproject.com/KB/aspnet/Forms_Auth_Internals/AuthTicket2.JPG

Editör: I dize bu noktadan önce geçer şifre çözme fonksiyonu ile doldurulur ucunda olduğunu keşfettiler. Ben son 6 bayt kaldırılır ve buna göre bilet ve karma ayarlanır. Hala çalışır, ama ben daha yakınım değil.

5 Cevap

Bilet onaltılık dize kendisi hesaplanır. Belki eklenen karma aynı verilerin bir başka temsili hesaplanır?

Ben karakterler vs bayt hakkında karıştı alıyorsanız düşünüyorum.

Dahili olarak, php byte olarak bir dize her karakter saklar. Her ikili değeri 2 altıgen karakterler tarafından temsil edilmesi gerekiyor çünkü PHP üretir SHA1 karma, 40 karakter (40 bayt) 20-bayt ikili veri hexademical temsilidir.

Ben bu farkın gerçek kaynak ise emin değilim, ama bu yanlış anlama görünce o ilgili ise beni meraklandırıyor.

İlk dize kırpma deneyin, onun tamamen karma değiştirir ucunda bir yeni satır veya boşluk olması şaşırtıcı kolay.

(Yeni çizgi ve boşluklar çıkardıktan sonra) verilen metin bu Online SHA1 tool karma göre olan

b6ecd613698ac3533b5f853bf22f6eb4afb94239

Fikir: PHP sürümüne inputing karakter değil bir onaltılık sayı emin olun.

Sorun orijinal bir anahtarlı karma oldu. Ben olmadan bir doğrulama anahtarının yerine sha1 () ile hash_hmac () kullanmak zorunda kaldı.