Class SHA1
- java.lang.Object
-
- org.eclipse.jgit.util.sha1.SHA1
-
public class SHA1 extends Object
Pure Java implementation of SHA-1 from FIPS 180-1 / RFC 3174.See RFC 3174.
Unlike MessageDigest, this implementation includes the algorithm used by
sha1dc
to detect cryptanalytic collision attacks against SHA-1, such as the one used by SHAttered. See sha1collisiondetection for more information.When detectCollision is true (default), this implementation throws
Sha1CollisionException
from any digest method if a potential collision was detected.- Since:
- 4.7
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description byte[]
digest()
Finish the digest and return the resulting hash.void
digest(MutableObjectId id)
Finish the digest and return the resulting hash.boolean
hasCollision()
Check if a collision was detected.static SHA1
newInstance()
Create a new context to compute a SHA-1 hash of data.SHA1
reset()
Reset this instance to compute another hash.SHA1
setDetectCollision(boolean detect)
Enable likely collision detection.ObjectId
toObjectId()
Finish the digest and return the resulting hash.void
update(byte b)
Update the digest computation by adding a byte.void
update(byte[] in)
Update the digest computation by adding bytes to the message.void
update(byte[] in, int p, int len)
Update the digest computation by adding bytes to the message.
-
-
-
Method Detail
-
newInstance
public static SHA1 newInstance()
Create a new context to compute a SHA-1 hash of data.- Returns:
- a new context to compute a SHA-1 hash of data.
-
setDetectCollision
public SHA1 setDetectCollision(boolean detect)
Enable likely collision detection.Default is
true
.May also be set by system property:
-Dorg.eclipse.jgit.util.sha1.detectCollision=true
.- Parameters:
detect
- a boolean.- Returns:
this
-
update
public void update(byte b)
Update the digest computation by adding a byte.- Parameters:
b
- a byte.
-
update
public void update(byte[] in)
Update the digest computation by adding bytes to the message.- Parameters:
in
- input array of bytes.
-
update
public void update(byte[] in, int p, int len)
Update the digest computation by adding bytes to the message.- Parameters:
in
- input array of bytes.p
- offset to start at fromin
.len
- number of bytes to hash.
-
digest
public byte[] digest() throws Sha1CollisionException
Finish the digest and return the resulting hash.Once
digest()
is called, this instance should be discarded.- Returns:
- the bytes for the resulting hash.
- Throws:
Sha1CollisionException
- if a collision was detected and safeHash is false.
-
toObjectId
public ObjectId toObjectId() throws Sha1CollisionException
Finish the digest and return the resulting hash.Once
digest()
is called, this instance should be discarded.- Returns:
- the ObjectId for the resulting hash.
- Throws:
Sha1CollisionException
- if a collision was detected and safeHash is false.
-
digest
public void digest(MutableObjectId id) throws Sha1CollisionException
Finish the digest and return the resulting hash.Once
digest()
is called, this instance should be discarded.- Parameters:
id
- destination to copy the digest to.- Throws:
Sha1CollisionException
- if a collision was detected and safeHash is false.
-
hasCollision
public boolean hasCollision()
Check if a collision was detected.This method only returns an accurate result after the digest was obtained through
digest()
,digest(MutableObjectId)
ortoObjectId()
, as the hashing function must finish processing to know the final state.- Returns:
true
if a likely collision was detected.
-
reset
public SHA1 reset()
Reset this instance to compute another hash.- Returns:
this
.
-
-