Filehash (Datenspeicherung (Persistenz))
Berechnen Sie von einer Datei einen Hash-Wert nach folgender Formel: Jedes Byte soll als Zahl eingelesen werden. Nennen wir diese Zahlen der Einfachkeit halber a1, a2, a3, a4, a5, und so weiter. Nun soll der Hash-Wert einer Datei die folgende Summe sein:
h(File) = a1 + 31 * a2 + 312 * a3 + 313 * a4 + 314 * a5 + 315 * a6 + ...
Die Faktoren 31, 312, 313, 314, ... können in einer einzigen Variable gespeichert werden, die mit dem Wert 1 startet und bei jeder Iteration (bei jedem nächsten Zeichen) mit 31 mulitpliziert wird. Dabei soll ein Überlauf der Variable ignoriert werden.
0 Kommentare
1 Lösung(en)
function getFileHash() {
let file = document.getElementById('file').files[0],
reader = new FileReader();
reader.onload = function(evt) {
// bits in zahlenarray der bytes umwandeln
let bytes = new Uint8Array(evt.target.result);
// hash berechnen
let hash = bytes[0];
for (let a = 1; a < bytes.length; a++)
hash += 31**a + bytes[a];
console.log(hash);
}
reader.readAsArrayBuffer(file);
}
document.write(`
<input type="file" id="file">
<button onclick="getFileHash()">OK</button>
`);
Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)
Aktionen
Neue Lösung hinzufügen
Bewertung
Durchschnittliche Bewertung:
Meta
Zeit: | 1 |
Schwierigkeit: | k.A. |
Webcode: | 8ksi-eazy |
Autor: | Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch) |