2012-06-05 3 views
5

Weiß jemand, wie der GitHub ETag beim Zugriff auf Rohdaten erzeugt wird?GitHub Rohdateien - Etag Algorithmus

So weit ich das sagen kann, ist dies nicht MD5, SHA1 oder irgendeine übliche SHA-Variante;

Beispiel HTTP-Header:

HTTP/1.1 200 OK 
Server: nginx/1.0.13 
Date: Tue, 05 Jun 2012 19:46:08 GMT 
Content-Type: text/html; charset=utf-8 
Connection: keep-alive 
Status: 200 OK 
ETag: "aa1da178ae0a43e23ce49a6b8f474738" 

Die ETag Länge beträgt 32 Zeichen, was darauf hindeutet, MD5, aber dies entspricht nicht der MD5-Prüfsumme der heruntergeladenen Datei (Download mit curl).

Ich bin mir bewusst, dass ETags als undurchsichtige Bezeichner behandelt werden sollten. Immer noch neugierig.

+0

Dies ist ein wenig spezifisch, ist es nicht? –

+0

@dystroy Aha; Ich konnte keine Informationen über Google oder github.com finden. Dies ist, sagen wir mal, ein Schuss in die Dunkelheit. – Ishan

Antwort

0

Meine Vermutung wäre, dass sie die Aktien nginx Etag-Modul verwenden.

https://github.com/mikewest/nginx-static-etags/blob/master/ngx_http_static_etags_module.c

+0

Danke, aber keine Würfel. Dieses Modul erzeugt ETags, indem es einige Informationen aus der Nginx-Anfrage, die Dateigröße (hex) und die Datei mtime (hex) verkettet. C-Formatzeichenfolge "% s_% X_% X". übrigens auch bei der Nginx-Version in diesem Projekt README angegeben, etwas kaputt ist .. Dies ist, wie die ETag wie folgt aussehen: Etag:/redhat-release HTTP/1.1_newline_User-Agent_22_4FCFB809 diesen Weg URI ist + Protokollversion + _ \ n_ + Teil eines Anfrage-Headers + Hex-Dateigröße + Hex-Datei mtime. – Ishan