Larry,
This appears to be exactly what I need. I will test tonight with Authorize.Net and see if their hash is the same as mine (and it should be). Thanks for putting together the example program - it is all crystal clear to me now. I will let you know tomorrow if it matches their code.
Bruce,
The difference between the standard MD5 hash and the HMAC MD5 hash is that MD5 uses a private key that is known both to the sender and receiver (but no others) to create a unique value to ensure that the sender is legitimate.
All the values except the private key are passed to allow the receiver to recreate the hash (why they do it that way is beyond my understanding, because the public key is a combination of the company's transaction account number, the invoice total, the random sequence number and (get this) the number of seconds that have elapsed since January 1, 1970 - a bit of overkill).
My understanding of the standard MD5 hash is to create an obfuscated value (such as a password) that cannot (supposedly) be compromised, even by the system administrators.
This HMAC MD-5 encryption sounds like a kludge for this company only that will not be used by anyone else, but it may become more popular in time.
Cheers!
Rob