Source: https://blog.blockchain.com/2016/11/09/all-about-passwords-how-to-safely-generate-manage-them/