1

Angenommen, Sie eine vorhandene Hash g84t5tw73y487tb38wo4bq8o34q384o7nfw3q434hqa haben, die von der ursprünglichen Zeichenfolge dont downvote my stupid questionWie funktioniert Timestamp Hashing?

nun wie folgt ich zeitzustempeln diesen Hash erstellt wurde (in JS/Pseudo-Code):

var hash = 'g84t5tw73y487tb38wo4bq8o34q384o7nfw3q434hqa'; 
var today= new Date(); // 2017-10-19 

var timestamped = hash + today; 

var new_hash = SHA256(timestamped); 

// new_hash is 34t346tf3847tr8qrot3r8q248rtbrq4brtqti4t 

Wenn ich wollte, dass meine überprüfen Original-String kann ich tun:

var verified = goodHash('dont downvote my stupid question',hash); // true 

Wenn ich die timestamped Version überprüfen wollte, was ich tun kann:

var original_hash = 'g84t5tw73y487tb38wo4bq8o34q384o7nfw3q434hqa'; 
var today = '2017-10-19'; 
var verified = goodHash(original_hash+today, timestamped_hash); // true 

Aber wenn ich versuche, die ursprüngliche Zeichenfolge gegen den Zeitstempel, um zu überprüfen, I Cant tun:

var today = '2017-10-19'; 
var verified = goodHash('dont downvote my stupid question'+today, timestamped_hash); // FALSE 

Nun ist diese ursprüngliche Zeichenfolge annimmt gehasht und timestamped immer und immer wieder für n Iterationen.

Ich würde immer nur die n-1th Zeitstempel verifizieren können, vorausgesetzt, ich habe die n-1th Hash.

Aber was ist, wenn ich die ursprüngliche Zeichenfolge dont downvote my stupid question habe und jeden ith Zeitstempel verifizieren möchte, wo 0 < i < n.

Grundsätzlich möchte ich, ob eine Zeichenfolge überprüfen, die ich nur von Wissen haben sollte, hat sich mit einem bestimmten Zeitpunkt timestamped worden, und zwar unabhängig davon, wie oft kann es und ohne die Länge der Saite timestamped wurden zu (zu viel - obwohl irgendein Anstieg in der Länge Unendlichkeit nähert, wie n wächst).

Ist das überhaupt möglich? Kann ein Hash sogar all diese Informationen enthalten?

+0

Mein Bauch sagt mir, dass Sie die Original-Zeichenfolge und alle Zeitstempel (bis zum ith) kennen müssen, um den i-ten Hash zu generieren. –

Antwort

0

Blick Lassen Sie sich an der hier beteiligten Mathematik:

Zuerst müssen Sie eine Eingabestring s und eine Sequenz t von Zeitstempel. Ich werde t[i] verwenden, um den ith Zeitstempel zu bezeichnen. Ihr wiederholtes Hashing ist eine Rekursion:

f(i) = hash(f(t[i-1]) + t[i]) 

Wo + String-Verkettung bezeichnet. Nun wollen wir feststellen, ob es eine geschlossene Formel F(x) gibt, die den Hash ith mit weniger Zeitaufwand berechnen wird als die Auswertung der Wiederholungsrelation f(i).

Ein Weg, dies zu erreichen, ist eine Zeichenfolge x(i) mit dem gleichen Hash wie f(t[i-1]) + t[i] zu finden. Für einen guten Hashalgorithmus sind diese Kollisionen äußerst selten. Mein Bauchgefühl ist, dass das Finden einer solchen Schnur (anders als f(t[i-1]) + t[i] selbst) schwieriger ist als einfach direkt aus der Rekursionsbeziehung zu berechnen.

+0

hows dies eine Antwort auf die Frage OP gefragt. OP fragt, gegeben 't [n]' und 's' (die anderen Zeitstempel' t [i] wo 0 pellucide