Package org.bitcoinj.base
Class Sha256Hash
java.lang.Object
org.bitcoinj.base.Sha256Hash
- All Implemented Interfaces:
 Comparable<Sha256Hash>
A 
Sha256Hash wraps a byte[] so that equals(java.lang.Object) and hashCode() work correctly, allowing it to be used as a key in a
 map. It also checks that the length is correct (equal to LENGTH) and provides a bit more type safety.
 
 Given that Sha256Hash instances can be created using wrapReversed(byte[]) or twiceOf(byte[]) or by wrapping raw bytes, there is no guarantee that if two Sha256Hash instances are found equal (via equals(Object)) that their preimages would be the same (even in the absence of a hash collision.)
- 
Field Summary
Fields - 
Method Summary
Modifier and TypeMethodDescriptionintcompareTo(Sha256Hash other) booleanbyte[]getBytes()Returns the internal byte array, without defensively copying.byte[]Deprecated.static byte[]hash(byte[] input) Calculates the SHA-256 hash of the given bytes.static byte[]hash(byte[] input, int offset, int length) Calculates the SHA-256 hash of the given byte range.inthashCode()Returns the last four bytes of the wrapped hash.static byte[]hashTwice(byte[] input) Calculates the SHA-256 hash of the given bytes, and then hashes the resulting hash again.static byte[]hashTwice(byte[] input1, byte[] input2) Calculates the hash of hash on the given chunks of bytes.static byte[]hashTwice(byte[] input, int offset, int length) Calculates the SHA-256 hash of the given byte range, and then hashes the resulting hash again.static byte[]hashTwice(byte[] input1, int offset1, int length1, byte[] input2, int offset2, int length2) Calculates the hash of hash on the given byte ranges.static MessageDigestReturns a new SHA-256 MessageDigest instance.static Sha256Hashof(byte[] contents) Creates a new instance containing the calculated (one-time) hash of the given bytes.static Sha256HashCreates a new instance containing the calculated (one-time) hash of the given file's contents.static Sha256Hashread(ByteBuffer buf) Create a new instance by reading from the given buffer.byte[]Allocates a byte array and writes the hash into it, in reversed order.Returns the bytes interpreted as a positive integer.toString()static Sha256HashtwiceOf(byte[] contents) Creates a new instance containing the hash of the calculated hash of the given bytes.static Sha256HashtwiceOf(byte[] content1, byte[] content2) Creates a new instance containing the hash of the calculated hash of the given bytes.static Sha256Hashwrap(byte[] rawHashBytes) Creates a new instance that wraps the given hash value.static Sha256HashCreates a new instance that wraps the given hash value (represented as a hex string).static Sha256HashwrapReversed(byte[] rawHashBytes) Creates a new instance that wraps the given hash value, but with byte order reversed.write(ByteBuffer buf) Write hash into the given buffer. 
- 
Field Details
- 
LENGTH
public static final int LENGTH- See Also:
 
 - 
ZERO_HASH
 
 - 
 - 
Method Details
- 
wrap
Creates a new instance that wraps the given hash value.- Parameters:
 rawHashBytes- the raw hash bytes to wrap- Returns:
 - a new instance
 - Throws:
 IllegalArgumentException- if the given array length is not exactly 32
 - 
wrap
Creates a new instance that wraps the given hash value (represented as a hex string).- Parameters:
 hexString- a hash value represented as a hex string- Returns:
 - a new instance
 - Throws:
 IllegalArgumentException- if the given string is not a valid hex string, or if it does not represent exactly 32 bytes
 - 
wrapReversed
Creates a new instance that wraps the given hash value, but with byte order reversed.- Parameters:
 rawHashBytes- the raw hash bytes to wrap- Returns:
 - a new instance
 - Throws:
 IllegalArgumentException- if the given array length is not exactly 32
 - 
read
Create a new instance by reading from the given buffer.- Parameters:
 buf- buffer to read from- Returns:
 - a new instance
 - Throws:
 BufferUnderflowException- if the read hash extends beyond the remaining bytes of the buffer
 - 
of
Creates a new instance containing the calculated (one-time) hash of the given bytes.- Parameters:
 contents- the bytes on which the hash value is calculated- Returns:
 - a new instance containing the calculated (one-time) hash
 
 - 
twiceOf
Creates a new instance containing the hash of the calculated hash of the given bytes.- Parameters:
 contents- the bytes on which the hash value is calculated- Returns:
 - a new instance containing the calculated (two-time) hash
 
 - 
twiceOf
Creates a new instance containing the hash of the calculated hash of the given bytes.- Parameters:
 content1- first bytes on which the hash value is calculatedcontent2- second bytes on which the hash value is calculated- Returns:
 - a new instance containing the calculated (two-time) hash
 
 - 
of
Creates a new instance containing the calculated (one-time) hash of the given file's contents. The file contents are read fully into memory, so this method should only be used with small files.- Parameters:
 file- the file on which the hash value is calculated- Returns:
 - a new instance containing the calculated (one-time) hash
 - Throws:
 IOException- if an error occurs while reading the file
 - 
newDigest
Returns a new SHA-256 MessageDigest instance. This is a convenience method which wraps the checked exception that can never occur with a RuntimeException.- Returns:
 - a new SHA-256 MessageDigest instance
 
 - 
hash
public static byte[] hash(byte[] input) Calculates the SHA-256 hash of the given bytes.- Parameters:
 input- the bytes to hash- Returns:
 - the hash (in big-endian order)
 
 - 
hash
public static byte[] hash(byte[] input, int offset, int length) Calculates the SHA-256 hash of the given byte range.- Parameters:
 input- the array containing the bytes to hashoffset- the offset within the array of the bytes to hashlength- the number of bytes to hash- Returns:
 - the hash (in big-endian order)
 
 - 
hashTwice
public static byte[] hashTwice(byte[] input) Calculates the SHA-256 hash of the given bytes, and then hashes the resulting hash again.- Parameters:
 input- the bytes to hash- Returns:
 - the double-hash (in big-endian order)
 
 - 
hashTwice
public static byte[] hashTwice(byte[] input1, byte[] input2) Calculates the hash of hash on the given chunks of bytes. This is equivalent to concatenating the two chunks and then passing the result tohashTwice(byte[]). - 
hashTwice
public static byte[] hashTwice(byte[] input, int offset, int length) Calculates the SHA-256 hash of the given byte range, and then hashes the resulting hash again.- Parameters:
 input- the array containing the bytes to hashoffset- the offset within the array of the bytes to hashlength- the number of bytes to hash- Returns:
 - the double-hash (in big-endian order)
 
 - 
hashTwice
public static byte[] hashTwice(byte[] input1, int offset1, int length1, byte[] input2, int offset2, int length2) Calculates the hash of hash on the given byte ranges. This is equivalent to concatenating the two ranges and then passing the result tohashTwice(byte[]). - 
equals
 - 
hashCode
public int hashCode()Returns the last four bytes of the wrapped hash. This should be unique enough to be a suitable hash code even for blocks, where the goal is to try and get the first bytes to be zeros (i.e. the value as a big integer lower than the target value). - 
toString
 - 
toBigInteger
Returns the bytes interpreted as a positive integer. - 
getBytes
public byte[] getBytes()Returns the internal byte array, without defensively copying. Therefore do NOT modify the returned array. - 
serialize
public byte[] serialize()Allocates a byte array and writes the hash into it, in reversed order.- Returns:
 - byte array containing the hash
 
 - 
getReversedBytes
Deprecated.useserialize() - 
write
Write hash into the given buffer.- Parameters:
 buf- buffer to write into- Returns:
 - the buffer
 - Throws:
 BufferOverflowException- if the hash doesn't fit the remaining buffer
 - 
compareTo
- Specified by:
 compareToin interfaceComparable<Sha256Hash>
 
 - 
 
serialize()