A fully differentiable implementation of SHA256