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
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionintCompares the value of two HashCashesbooleanTwo objects are considered equal if they are both of type HashCash and have an identical string representationstatic longestimateTime(int value) Estimates how many milliseconds it would take to mint a cash of the specified value.static intestimateValue(int secs) Estimates what value (e.g.getDate()The minting dateExtra data encoded in the HashCashThe primary resource being protectedintgetValue()The value of the HashCash (e.g.intWhich version of HashCash is used hereinthashCode()Implemented based on definition of equals()static HashCashMints a version 1 HashCash using now as the datestatic HashCashMints a HashCash using now as the datestatic HashCashMints a version 1 HashCashstatic HashCashMints a HashCashstatic HashCashMints a version 1 HashCash using now as the datestatic HashCashMints a HashCash using now as the datestatic HashCashMints a version 1 HashCashstatic HashCashmintCash(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:
compareToin interfaceComparable<HashCash>- Parameters:
other-- See Also:
-