Package com.nettgryppa.security
Class HashCash
java.lang.Object
com.nettgryppa.security.HashCash
- All Implemented Interfaces:
Comparable<HashCash>
Class for generation and parsing of HashCash
Copyright 2006 Gregory Rubin grrubin@gmail.com
Permission is given to use, modify, and or distribute this code so long as this message remains attached
Please see the spec at: http://www.hashcash.org/
Copyright 2006 Gregory Rubin grrubin@gmail.com
Permission is given to use, modify, and or distribute this code so long as this message remains attached
Please see the spec at: http://www.hashcash.org/
- Version:
- 1.1
- Author:
- grrubin@gmail.com
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionint
Compares the value of two HashCashesboolean
Two objects are considered equal if they are both of type HashCash and have an identical string representationstatic long
estimateTime
(int value) Estimates how many milliseconds it would take to mint a cash of the specified value.static int
estimateValue
(int secs) Estimates what value (e.g.getDate()
The minting dateExtra data encoded in the HashCashThe primary resource being protectedint
getValue()
The value of the HashCash (e.g.int
Which version of HashCash is used hereint
hashCode()
Implemented based on definition of equals()static HashCash
Mints a version 1 HashCash using now as the datestatic HashCash
Mints a HashCash using now as the datestatic HashCash
Mints a version 1 HashCashstatic HashCash
Mints a HashCashstatic HashCash
Mints a version 1 HashCash using now as the datestatic HashCash
Mints a HashCash using now as the datestatic HashCash
Mints a version 1 HashCashstatic HashCash
mintCash
(String resource, Map<String, List<String>> extensions, Calendar date, int value, int version) Mints a HashCashtoString()
Returns the canonical string representation of the HashCash
-
Field Details
-
DefaultVersion
public static final int DefaultVersion- See Also:
-
-
Constructor Details
-
HashCash
Parses and validates a HashCash.- Throws:
NoSuchAlgorithmException
- If SHA1 is not a supported Message Digest
-
-
Method Details
-
mintCash
Mints a version 1 HashCash using now as the date- Parameters:
resource
- the string to be encoded in the HashCash- Throws:
NoSuchAlgorithmException
- If SHA1 is not a supported Message Digest
-
mintCash
public static HashCash mintCash(String resource, int value, int version) throws NoSuchAlgorithmException Mints a HashCash using now as the date- Parameters:
resource
- the string to be encoded in the HashCashversion
- Which version to mint. Only valid values are 0 and 1- Throws:
NoSuchAlgorithmException
- If SHA1 is not a supported Message Digest
-
mintCash
public static HashCash mintCash(String resource, Calendar date, int value) throws NoSuchAlgorithmException Mints a version 1 HashCash- Parameters:
resource
- the string to be encoded in the HashCash- Throws:
NoSuchAlgorithmException
- If SHA1 is not a supported Message Digest
-
mintCash
public static HashCash mintCash(String resource, Calendar date, int value, int version) throws NoSuchAlgorithmException Mints a HashCash- Parameters:
resource
- the string to be encoded in the HashCashversion
- Which version to mint. Only valid values are 0 and 1- Throws:
NoSuchAlgorithmException
- If SHA1 is not a supported Message Digest
-
mintCash
public static HashCash mintCash(String resource, Map<String, List<String>> extensions, int value) throws NoSuchAlgorithmExceptionMints a version 1 HashCash using now as the date- Parameters:
resource
- the string to be encoded in the HashCashextensions
- Extra data to be encoded in the HashCash- Throws:
NoSuchAlgorithmException
- If SHA1 is not a supported Message Digest
-
mintCash
public static HashCash mintCash(String resource, Map<String, List<String>> extensions, int value, int version) throws NoSuchAlgorithmExceptionMints a HashCash using now as the date- Parameters:
resource
- the string to be encoded in the HashCashextensions
- Extra data to be encoded in the HashCashversion
- Which version to mint. Only valid values are 0 and 1- Throws:
NoSuchAlgorithmException
- If SHA1 is not a supported Message Digest
-
mintCash
public static HashCash mintCash(String resource, Map<String, List<String>> extensions, Calendar date, int value) throws NoSuchAlgorithmExceptionMints a version 1 HashCash- Parameters:
resource
- the string to be encoded in the HashCashextensions
- Extra data to be encoded in the HashCash- Throws:
NoSuchAlgorithmException
- If SHA1 is not a supported Message Digest
-
mintCash
public static HashCash mintCash(String resource, Map<String, List<String>> extensions, Calendar date, int value, int version) throws NoSuchAlgorithmExceptionMints a HashCash- Parameters:
resource
- the string to be encoded in the HashCashextensions
- Extra data to be encoded in the HashCashversion
- Which version to mint. Only valid values are 0 and 1- Throws:
NoSuchAlgorithmException
- If SHA1 is not a supported Message Digest
-
equals
Two objects are considered equal if they are both of type HashCash and have an identical string representation -
hashCode
public int hashCode()Implemented based on definition of equals() -
toString
Returns the canonical string representation of the HashCash -
getExtensions
Extra data encoded in the HashCash -
getResource
The primary resource being protected -
getDate
The minting date -
getValue
public int getValue()The value of the HashCash (e.g. how many leading zero bits it has) -
getVersion
public int getVersion()Which version of HashCash is used here -
estimateTime
Estimates how many milliseconds it would take to mint a cash of the specified value.- NOTE1: Minting time can vary greatly in fact, half of the time it will take half as long)
- NOTE2: The first time that an estimation function is called it is expensive (on the order of seconds). After that, it is very quick.
- Throws:
NoSuchAlgorithmException
- If SHA1 is not a supported Message Digest
-
estimateValue
Estimates what value (e.g. how many bits of collision) are required for the specified length of time.- NOTE1: Minting time can vary greatly in fact, half of the time it will take half as long)
- NOTE2: The first time that an estimation function is called it is expensive (on the order of seconds). After that, it is very quick.
- Throws:
NoSuchAlgorithmException
- If SHA1 is not a supported Message Digest
-
compareTo
Compares the value of two HashCashes- Specified by:
compareTo
in interfaceComparable<HashCash>
- Parameters:
other
-- See Also:
-