digest vs read()