Why reinvent the wheel? Why not just farm the work out to libcrypto? Last I checked OpenSSL typically has a SHA1 implementation that you don't have to fiddle with. Jason