2016-04-20 12 views
0

Wenn ein Video auf meinem lokalen Speicher - sagen wir mal file:///home/user/video.m4v - durch Ziehen in eine neue Registerkarte in Chrome geöffnet wird, wie kann ich die SHA- 1 Prüfsumme für die Datei mit JavaScript?Berechne die SHA-1-Prüfsumme der lokalen html5-Videodatei mit JavaScript


Zweck:
ich eine Chrome-Erweiterung zu schreiben, bin der Planung, die die berechnete Prüfsumme von Videos (Dateien mit den Erweiterungen mit einem Muster übereinstimmen) gespeichert werden als local Objekte, um die Wiedergabeposition von Video zu speichern, auf Tab schließen und dann wiederherstellen, wenn die Datei erneut geladen wird, auch wenn der Ort oder der Dateiname des Videos geändert wird.

+0

* Sie können eine Antwort annehmen, wenn es Ihnen geholfen hat und Sie keine weiteren Fragen haben. **:) ** Ansonsten kannst du gerne fragen. * – Seika85

+0

Hi @ Seika85. Ich hatte keine Gelegenheit mehr, zu diesem Nebenprojekt zurückzukehren, seit ich die Frage gestellt habe, aber sobald ich es wieder aufrufe, wird deine Antwort die erste sein, die ich mir ansehe. – jsejcksn

Antwort

1

Sie benötigen dafür eine Krypto-Bibliothek. Ein bekanntes ist Google CryptoJS.

Ich fand dies als konkretes Beispiel für Ihre Aufgabe: https://gist.github.com/npcode/11282867

Nach der Krypto-js Quelle zB:

function sha1sum() { 
    var oFile = document.getElementById('uploadFile').files[0]; 
    var sha1 = CryptoJS.algo.SHA1.create(); 
    var read = 0; 
    var unit = 1024 * 1024; 
    var blob; 
    var reader = new FileReader(); 
    reader.readAsArrayBuffer(oFile.slice(read, read + unit)); 
    reader.onload = function(e) { 
     var bytes = CryptoJS.lib.WordArray.create(e.target.result); 
     sha1.update(bytes); 
     read += unit; 
     if (read < oFile.size) { 
      blob = oFile.slice(read, read + unit); 
      reader.readAsArrayBuffer(blob); 
     } else { 
      var hash = sha1.finalize(); 
      console.log(hash.toString(CryptoJS.enc.Hex)); // print the result 
     } 
    } 
} 

Ich würde nicht einen Hash über die gesamten zu berechnen empfehlen Videodatei, da sie abhängig von der Dateigröße ziemlich ressourcenintensiv sein kann. Vielleicht können Sie nur die Meta-Informationen verwenden oder den Dateinamen und Dateipfad erneut überdenken?