لماذا هو بلدي تجزئة SHA1 يست مطابقة؟
سؤال
وأنا لا أعتقد أنني كنت محددة بما يكفي المرة الأخيرة. هنا نذهب:
ولدي سلسلة عرافة:
<اقتباس فقرة>و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 () دون.