The two phrases are practically the same.
Any difference between them would be too minute even for native speakers.
However, 되다 has some closely related usages with slightly varying expressions, while 하다 does not:
- 나는 가야(만) 된다 (I must go) == 나는 가야(만) 한다.
- 나는 가면 된다 (I can simply/just go). No ~한다 version.
- 나는 가면 [가서는] 안 된다 (I must not go), No ~한다 version.
- 나는 가도 된다 (I am allowed to go; It's okay for me to go), No ~한다 version.
Apart from these, both 되다 and 하다 have many other usages in different contexts.