سؤال

وأنا لا أعتقد أنني كنت محددة بما يكفي المرة الأخيرة. هنا نذهب:

ولدي سلسلة عرافة:

<اقتباس فقرة>   

و742713478fb3c36e014d004100440041004   e0041004e00000060f347d15798c9010060   6b899c5a98c9014d007900470072006f007   500700000002f0000001f7691944b9a3306   295fb5f1f57ca52090d35b50060606060606

والبايتات ال 20 الماضية أن (نظريا) تحتوي على تجزئة SHA1 الجزء الأول (سلسلة كاملة - 20 بايت). ولكنها لا تتطابق بالنسبة لي.

وتحاول أن تفعل هذا مع PHP، ولكن لم الحظ. يمكنك الحصول على المباراة؟

التذكرة:

<اقتباس فقرة>   

و742713478fb3c36e014d004100   440041004e0041004e00000060   f347d15798c90100606b899c5a   98c9014d007900470072006f00   7500700000002f0000001f7691944b9a

SHA1 تجزئة تذكرة إلحاق الأصلي:

<اقتباس فقرة>   

و3306295fb5f1f57ca52090d35b50060606060606

بلدي SHA1 تجزئة تذكرة:

<اقتباس فقرة>   

وb6ecd613698ac3533b5f853bf22f6eb4afb94239

وهنا ما هو موجود في حجز التذاكر وكيف يجري تخزينها. FWIW، ويمكنني أن تنسحب المستخدم، الخ، وبقعة مختلف المحددات. http://www.codeproject.com/KB/aspnet/Forms_Auth_Internals/AuthTicket2. JPG

وتعديل: لقد اكتشفت أن السلسلة هو مبطن على الطرف بواسطة الدالة فك التشفير وغني عن طريق قبل هذه النقطة. أزلت 6 بايت الماضية وتعديلها من قبل وحجز التذاكر والتجزئة وفقا لذلك. لا يزال لا يعمل، ولكن أنا أقرب.

هل كانت مفيدة؟

المحلول

ويتم احتساب تذكرتك على سلسلة عرافة نفسها. ربما يحسب تجزئة إلحاق على تمثيل آخر من نفس البيانات؟

نصائح أخرى

وأعتقد أنك تحصل على الخلط حول بايت مقابل حرفا.

وعلى الصعيد الداخلي، فب مخازن كل حرف في سلسلة ك بايت. تجزئة SHA1 الذي يولد PHP هو 40 حرف (40 بايت) تمثيل hexademical من البيانات الثنائية 20 بايت، لأن كل قيمة ثنائية يجب أن تكون ممثلة بنسبة 2 الأحرف عرافة.

ولست متأكدا إذا كان هذا هو المصدر الفعلي من التناقض، ولكن رؤية هذا سوء فهم يجعلني أتساءل عما إذا كان هو تعلق الأمر.

وحاول تقليم سلسلة أولا، من السهل المدهش أن يكون سطر جديد أو مساحة على الطرف الذي يغير تجزئة تماما.

ووفقا لهذا أداة على الانترنت SHA1 تجزئة النص المعطى (بعد إزالة الجديدة الخطوط والمسافات) هو

b6ecd613698ac3533b5f853bf22f6eb4afb94239

وفكرة: تأكد من الشخصيات بادخال نص الخاص بك لا عدد عرافة إلى إصدار PHP

.

وكانت المشكلة أن الأصل هو تجزئة مرتبطا. اضطررت لاستخدام hash_hmac () مع مفتاح التحقق من صحة بدلا من SHA1 () دون.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top