I built an interactive SHA-256 visualizer to finally understand how it works