|
|||||||||
| Home >> All >> net >> jxta >> impl >> id >> [ binaryID overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
net.jxta.impl.id.binaryID
Class DigestTool

java.lang.Objectnet.jxta.impl.id.binaryID.DigestTool
- public class DigestTool
- extends java.lang.Object
This is a utility class used to create pipe advertisement named and BinaryID for the pipeID to create a private address space that can be hosted in the public discovery system or sent over unencrypted channeds without revealing their intent or purpose.
We use a one-way hashing algorythum to create an ID from private information like a user's social security number or a user's email address. We search for the pipe by with this private information securly by creating the matching hash using the same methods.
The purpose of this system is to create a way to search for a pipe (or other BinaryID based system) without exposing the pipe owner's clearTextID while allowing for people that know what they are looking for to find the right pipe. The system also has the ability to create pipes that have a specific purpose. For example, the email address is appended with a function name. Say you have a pipe for messages and one for administrative purposes. You would supply the email and a string for the function. The same combination can be created by another peer to search for either of these pipes.
This implementation uses the "SHA-1" algorythum. This was selected for relitive speed. It is used as a one-way conversion that cannot be reversed engineered to create the original string. This allows you to publish the hash without the possibility of the contents being decoded. This allows for public indexing of data that is only known by the parties involved.
Note that this can also be used to generate safe password verification hash codes.
Sample useage:
String clearTextID = "turbogeek@cluck.com";
String function = "eventPipe";
System.out.println("clear text ID: "+clearTextID);
System.out.println("function text: "+function);
String digest1 = DigestID.generateHashString(clearTextID, function);
String digest2 = DigestID.generateHashString(clearTextID);
System.out.println("Digest1: '"+digest1+"'");
System.out.println("Digest2: '"+digest2+"'");
System.out.println("test1: "+DigestID.test(clearTextID, function,digest1));
System.out.println("test2: "+DigestID.test(clearTextID, digest2));
System.out.println("Digest1 != Digest2: "+DigestID.test(clearTextID, function,digest2));
To use an algorythum other than SHA-1, you will need stronger encyption. The BouncyCastle that comes with JXTA is just a minimum implimentation so a good choice is the normal bouncy castle (it is much larger, nearing a meg, which is why it is not a part of the normal JXTA distribution. The full version of bouncy includes SHA-128, SHA-256, SHA-384, and SHA-512.
Here is how you create a provider from the full version of Bouncy. Once you do this, you can access the extended
Digest ecryption levels.
provider = new org.bouncycastle.jce.provider.BouncyCastleProvider();
System.out.println("provider:"+provider.getName());
Security.addProvider(provider);
Security Note
This class should have all of its fields and properties marked as 'final' to prevent overriding the default behavior. Failure to do so could allow a less scrupulous person to cause the BinaryID or hash codes to contain the original information. Note that the class itself is not final to allow for additional convienience methods to be added. There a no methods for creating ModuleClassBinaryID, ModuleSpecBinaryID, or CodatID because this is meant for general' use, not for extending platform (you can write your own using similar code).
- Version:
- $Revision: 1.6 $
| Field Summary | |
(package private) java.lang.String |
algorithmType
|
static boolean |
debug
varaible used for conditional compile of debug printing. |
java.lang.String |
functionSeperator
Tilde character used to seperate candidate strings from a function. |
private static org.apache.log4j.Logger |
LOG
|
static java.lang.String |
SHA128
SHA-128 digest algorithm type. |
static java.lang.String |
SHA256
SHA-256 digest algorithm type. |
static java.lang.String |
SHA384
SHA-384 digest algorithm type. |
static java.lang.String |
SHA512
SHA-512 digest algorithm type. |
static java.lang.String |
SHAOne
Defualt SHA-1 digest algorithm type. |
| Constructor Summary | |
DigestTool()
|
|
DigestTool(java.lang.String algorithmType)
|
|
| Method Summary | |
PeerGroupBinaryID |
createPeerGroupID(net.jxta.peergroup.PeerGroupID parentPeerGroupID,
java.lang.String clearTextID,
java.lang.String function)
Create a PeerGroupID based on the BinaryID type with a digest of the clearTextID and function. |
PeerBinaryID |
createPeerID(net.jxta.peergroup.PeerGroupID peerGroupID,
java.lang.String clearTextID,
java.lang.String function)
Create a PeerID based on the BinaryID type with a digest of the clearTextID and function. |
PipeBinaryID |
createPipeID(net.jxta.peergroup.PeerGroupID peerGroupID,
java.lang.String clearTextID,
java.lang.String function)
Create a PipeID based on the BinaryID type with a digest of the clearTextID and function. |
byte[] |
generateHash(java.lang.String clearTextID)
Generates a SHA-1 digest hash of the string: clearTextID. |
byte[] |
generateHash(java.lang.String clearTextID,
java.lang.String function)
Generates an SHA-1 digest hash of the string: clearTextID+"-"+function or: clearTextID if function was blank. |
java.lang.String |
generateHashString(java.lang.String clearTextID)
Generates a Base64 encoded string of an SHA-1 digest hash of the string: clearTextID. |
java.lang.String |
generateHashString(java.lang.String clearTextID,
java.lang.String function)
Generates a Base64 encoded string of an SHA-1 digest hash of the string: clearTextID+"-"+function or: clearTextID if function was blank. |
boolean |
test(java.lang.String clearTextID,
byte[] testHash)
Compares a clear text code or ID with a candidate hash code. |
boolean |
test(java.lang.String clearTextID,
java.lang.String testHash)
Compares a clear text code or ID with a candidate hash code. |
boolean |
test(java.lang.String clearTextID,
java.lang.String function,
java.lang.String testHash)
Generates an SHA-1 digest hash of the string: clearTextID. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
LOG
private static final org.apache.log4j.Logger LOG
debug
public static final boolean debug
- varaible used for conditional compile of debug printing.
- See Also:
- Constant Field Values
SHAOne
public static final java.lang.String SHAOne
- Defualt SHA-1 digest algorithm type. This is a 20 byte hash function (note: that MD5 is only 16 so we don't use it).
- See Also:
- Constant Field Values
SHA128
public static final java.lang.String SHA128
- SHA-128 digest algorithm type. This is a 128 bit hash function (note: must have another provider registered to use).
- See Also:
- Constant Field Values
SHA256
public static final java.lang.String SHA256
- SHA-256 digest algorithm type. This is a 256 bit hash function (note: must have another provider registered to use).
- See Also:
- Constant Field Values
SHA384
public static final java.lang.String SHA384
- SHA-384 digest algorithm type. This is a 384 bit hash function (note: must have another provider registered to use).
- See Also:
- Constant Field Values
SHA512
public static final java.lang.String SHA512
- SHA-512 digest algorithm type. This is a 512 bit hash function (note: must have another provider registered to use).
- See Also:
- Constant Field Values
functionSeperator
public final java.lang.String functionSeperator
- Tilde character used to seperate candidate strings from a function.
- See Also:
- Constant Field Values
algorithmType
java.lang.String algorithmType
| Constructor Detail |
DigestTool
public DigestTool()
DigestTool
public DigestTool(java.lang.String algorithmType)
| Method Detail |
createPipeID
public final PipeBinaryID createPipeID(net.jxta.peergroup.PeerGroupID peerGroupID, java.lang.String clearTextID, java.lang.String function)
- Create a PipeID based on the BinaryID type with a digest of the clearTextID and function.
createPeerGroupID
public final PeerGroupBinaryID createPeerGroupID(net.jxta.peergroup.PeerGroupID parentPeerGroupID, java.lang.String clearTextID, java.lang.String function)
- Create a PeerGroupID based on the BinaryID type with a digest of the clearTextID and function.
createPeerID
public final PeerBinaryID createPeerID(net.jxta.peergroup.PeerGroupID peerGroupID, java.lang.String clearTextID, java.lang.String function)
- Create a PeerID based on the BinaryID type with a digest of the clearTextID and function.
generateHashString
public final java.lang.String generateHashString(java.lang.String clearTextID)
- Generates a Base64 encoded string of an SHA-1 digest hash of the string: clearTextID.
generateHashString
public final java.lang.String generateHashString(java.lang.String clearTextID, java.lang.String function)
- Generates a Base64 encoded string of an SHA-1 digest hash of the string: clearTextID+"-"+function or: clearTextID if function was blank.
generateHash
public final byte[] generateHash(java.lang.String clearTextID)
- Generates a SHA-1 digest hash of the string: clearTextID.
generateHash
public final byte[] generateHash(java.lang.String clearTextID, java.lang.String function)
- Generates an SHA-1 digest hash of the string: clearTextID+"-"+function or: clearTextID if function was blank.
Note that the SHA-1 used only creates a 20 byte hash.
test
public final boolean test(java.lang.String clearTextID, java.lang.String function, java.lang.String testHash)
- Generates an SHA-1 digest hash of the string: clearTextID.
test
public final boolean test(java.lang.String clearTextID, java.lang.String testHash)
- Compares a clear text code or ID with a candidate hash code.
This is used to confirm that the clearTextID can be successfully converted to the hash.
test
public final boolean test(java.lang.String clearTextID, byte[] testHash)
- Compares a clear text code or ID with a candidate hash code.
This is used to confirm that the clearTextID can be successfully converted to the hash.
|
|||||||||
| Home >> All >> net >> jxta >> impl >> id >> [ binaryID overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
JAVADOC
net.jxta.impl.id.binaryID.DigestTool