It probably should be a center-less system.
Then people can check their votes at multiple sites to make sure a centralized site doesn't cheat.
Also, the entire system would need to be open-audited.
Each voting node could be queried for results, then entire node-network is known to all (no false nodes), node grouping could be peer verified (e.g. each state can verify it's nodes, each county, etc), ..and the U.N. have look-see as well. :)
Voter registration might still have to be paper based.
You should probably look at existing encrypted system so you don't have to re-invent the wheel. Bit-coin might be a good one to look at.
I don't know about the random hash though.
I would think you could combine social security number with with a user selected pass code, and maybe hash that, with the voting selections public.
However, you might have to accommodate advocates of id-less voting. I still don't know what to think of the idea of people who can vote without an id. That just seems like a big area of exploitation to me.
Also, something might be learned from studying anonymous vpn browsing schemes.
Those are some thoughts.