SHA-Hash einer lokalen Datei in Javascript mit der SubtleCrypto API berechnen
English
Deutsch
Das folgende Beispiel verwendet die SubtleCrypto API, um den SHA-256-Hash einer Datei zu berechnen, die in einem Datei-Input ausgewählt wird. Die Prüfsumme wird vollständig auf der Client-Seite berechnet, die Datei muss überhaupt nicht auf einen Server hochgeladen werden.
Dieser Code wurde darauf überprüft, die gleiche Prüfsumme zu generieren wie wenn man sha256sum auf der Kommandozeile ausführt.
Vollständiges Beispiel
Sie können diese Datei herunterladen, als index.html speichern und im Browser öffnen. Wählen Sie dann eine Datei aus und prüfen Sie die Entwickler-
index.html
<html>
<body>
<input type="file" id="myfile" onchange="onMyfileChange(this)" />
<script type="text/javascript">
function onMyfileChange(fileInput) {
if(fileInput.files[0] == undefined) {
return ;
}
var filename = fileInput.files[0].name;
// var filesize = fileInput.files[0].size;
var reader = new FileReader();
reader.onload = function(ev) {
console.log("File", filename, ":");
//
crypto.subtle.digest('SHA-256', ev.target.result).then(hashBuffer => {
// Hex in Hash umwandeln, siehe https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest#converting_a_digest_to_a_hex_string
const hashArray = Array.from(new Uint8Array(hashBuffer));
const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join(''); // Bytes in Hex-String umwandeln
console.log(hashHex);
}).catch(ex => console.error(ex));
};
reader.onerror = function(err) {
console.error("Fehler beim Lesen der Datei", err);
}
reader.readAsArrayBuffer(fileInput.files[0]);
}
</script>
</body>
</html>Check out similar posts by category:
Javascript
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow