Frage

Ich glaube nicht, ich war spezifisch genug, um beim letzten Mal. Los geht's:

Ich habe einen Hex-String:

  

742713478fb3c36e014d004100440041004   e0041004e00000060f347d15798c9010060   6b899c5a98c9014d007900470072006f007   500700000002f0000001f7691944b9a3306   295fb5f1f57ca52090d35b50060606060606

Die letzten 20 Bytes sollte (theoretisch) enthalten einen SHA1-Hash des ersten Teils (vollständige String - 20 Bytes). Aber es funktioniert nicht für mich passen.

Der Versuch, dies mit PHP zu tun, aber kein Glück. Können Sie ein Spiel bekommen?

Ticket:

  

742713478fb3c36e014d004100   440041004e0041004e00000060   f347d15798c90100606b899c5a   98c9014d007900470072006f00   7500700000002f0000001f7691944b9a

SHA1-Hash Ticket Original angehängt:

  

3306295fb5f1f57ca52090d35b50060606060606

My SHA1-Hash-Ticket:

  

b6ecd613698ac3533b5f853bf22f6eb4afb94239

Hier ist, was im Ticket ist und wie sie gespeichert werden wird. FWIW, ich kann Benutzernamen herausziehen, etc, und die verschiedenen Trennzeichen erkennen. http://www.codeproject.com/KB/aspnet/Forms_Auth_Internals/AuthTicket2. JPG

Editiert: Ich habe entdeckt, dass die Zeichenfolge am Ende durch die Entschlüsselungsfunktion aufgefüllt wird durch vor diesem Punkt geht. I entfernt die letzten 6 Bytes und durch Ticket und hash entsprechend angepasst. immer noch nicht funktioniert, aber ich bin näher.

War es hilfreich?

Lösung

Ihr Ticket wird auf dem Hex-String selbst berechnet. Vielleicht ist die beigefügte Hash auf einer anderen Darstellung der gleichen Daten berechnet?

Andere Tipps

Ich denke, Sie werden immer verwirrt über Bytes vs Zeichen.

Intern PHP speichert jedes Zeichen in einer Zeichenkette als ein Byte. Der SHA1-Hash, die PHP erzeugt, ist eine 40-Zeichen (40 Byte) hexadezimale Darstellung der 20-Byte-Binärdaten, da jeder Binärwert muss durch 2 Hex-Zeichen dargestellt werden.

Ich bin mir nicht sicher, ob dies die eigentliche Quelle der Diskrepanz ist, aber dieses Missverständnis zu sehen, macht mich fragen, ob es in engen Zusammenhang steht.

Versuchen Sie die Zeichenfolge ersten Trimmen, es ist überraschend einfach eine neue Zeile oder Leerzeichen am Ende zu haben, die den Hash vollständig verändert.

Nach diesem Online SHA1-Tool des Hash-Wert des gegebenen Textes (nach dem neuen Entfernen Linien und Flächen) ist

b6ecd613698ac3533b5f853bf22f6eb4afb94239

Idee: Stellen Sie sicher, dass Ihre inputing Zeichen nicht eine Hex-Zahl mit der PHP-Version

.

Das Problem war, dass das Original ein verschlüsselter Hash war. Ich hatte hash_hmac () mit einem Validierungsschlüssel zu verwenden, anstatt SHA1 () ohne.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top