all changes
use hashlib and md5