He leído sobre la iteración de hashing y, aunque esta no es una pregunta sobre seguridad, parece que no puedo encontrar información sobre cómo hacerlo correctamente.
Pensé que cuando estaba en React, esto debería hacerse con useState , pero claramente me falta algo aquí.
Código completo:
import { sha256 } from "js-sha256"; import { useState } from "react"; function App() { const [currentHash, setCurrentHash] = useState("summer1"); function iterate(iterations) { for (let x = 0; x < iterations; x++) { setCurrentHash(sha256(currentHash)); //Does 1 hash only console.log("Hashed", x, "times"); //Logs 4 times } } return ( <div className="App"> <button onClick={() => iterate(4)}> Klick</button> currentHash: {currentHash} {/* Correct hashes */} <p>0: summer1</p> <p>1: {sha256("summer1")}</p> <p>2: {sha256(sha256("summer1"))}</p> <p>3: {sha256(sha256(sha256("summer1")))}</p> <p>4: {sha256(sha256(sha256(sha256("summer1"))))}</p> </div> ); } export default App;sha256(currentHash) le dará el mismo resultado sin importar cuántas veces lo ejecute.
currentHash no se actualizará hasta que el componente se vuelva a representar y se extraiga un nuevo valor del estado y se asigne a la nueva instancia de currentHash en la parte superior de la función.
Necesitas:
Código de trabajo:
import { sha256 } from "js-sha256"; import { useState } from "react"; function App() { const [currentHash, setCurrentHash] = useState(""); function iterate(input, iterations) { for (let x = 0; x < iterations; x++) { input = sha256(input); console.log("Hashed", x, "times"); } setCurrentHash(input) } return ( <div className="App"> <button onClick={() => iterate("summer1", 2)}> Klick</button> currentHash: {currentHash} </div> ); } export default App;