I wrote my own hashing method [1] that given a correct spec for password restrictions would always generate a valid password. It does it by taking the hash in base64, then translating those a new set of base64 characters chosen to increase the likelihood of getting a valid password.  If one generated is not valid, it then iterates until a valid one is found (by cycling the bits).<p>I have used this personally since I wrote it.  Given the downsides, I agree that password managers are probably better for most people.<p>[1]: <a href="https:&#x2F;&#x2F;github.com&#x2F;onionjake&#x2F;doh" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;onionjake&#x2F;doh</a>