spesh errors
use urandom for salt