Das Problem sehe ich hier:
In dem Moment, indem der User die Datenbank mit dem Backup überschreibt, ist diese verloren. Dem User dann noch mit einem Hashwert mitzuteilen, dass er etwas falsch gemacht hat, hilft niemanden.
Betrachte es mal anders: Anscheinend sucht der Kunde eine Möglichkeit ein Backup zu machen.
Also biete ihm eine an, die du kontrollierst.
- der User kann ein Backup anlegen
- der User kann ein Backup importieren, wenn es neuer ist
(ansonsten nachfragen oder/und mergen)
- außerdem kopierst du bei Programmende die jeweils aktuellste Datenbank an eine Stelle, die der User nicht findet/überschreibt
(vielleicht auch alle aktuellen Versionszweige, wenn jemand sehr rumsaut)
- wenn jetzt ein Nutzer eine alte Kopie zurückschreibt, gehst du vor wie bei 2. und gibst eine böse Fehlermeldung aus, so das er es nicht nochmal macht.
Das Datum der letzten Änderung schreibst du einfach in die Datenbank und in die Registry.
Wenn du das mergen geschickt realisierst, können die Benutzer sogar untereinander Datensätze tauschen.