Problem with value after OP_HASH160

2

I am trying to implement JavaScript interpreter for Bitcoin scripts, but I have problem with counting value of OP_HASH160. I found that

Hash160(x) = RIPEMD160(SHA256(x))

However, when I try to count it this way using CryptoJS library, I get different value than on page http://paulkernfeld.com/bse/.

CryptoJS.RIPEMD160(CryptoJS.SHA256("02c34538fc933799d972f55752d318c0328ca2bacccd5c7482119ea9da2df70a2f")).toString() = "e81794c3da1564a196665dd0f74483185f524fe2"

where "02c34538fc933799d972f55752d318c0328ca2bacccd5c7482119ea9da2df70a2f" is the first element on the top of the stack.

Could somebody explain how exactly operation OP_HASH160 works?

Thx! :)

me.ex

Posted 2014-06-06T21:53:20.940

Reputation: 63

Answers

1

If the output of SHA256 is hex, you must convert hex to bytes before passing that to RIPEMD160.

See http://procbits.com/2013/08/27/generating-a-bitcoin-address-with-javascript

 var hash160 = Crypto.RIPEMD160(Crypto.util.hexToBytes(Crypto.SHA256(publicKeyBytes)))

hsmiths

Posted 2014-06-06T21:53:20.940

Reputation: 701

Thank you for answer. However, I still have problem with getting proper value.me.ex 2014-06-08T09:28:10.707

Oh, I made mistake in implementation :) It works great! Thank you!me.ex 2014-06-08T10:44:38.743

1@me.ex please click "approve" next to the answer, and upvote it. That way hsmiths will get karma :)kolinko 2014-07-17T21:31:03.740