An object-oriented approach to cryptography in Java.
This project aims to replace/wrap the following JDK APIs:
MessageDigest,
Mac and
Cipher.
cactoos-crypto is a direct alternative to this project.
In order to start using Caesar's hashing utilities you first have to wrap a MessageDigest
instance inside a new ImmutableMessageDigest
object:
ImmutableMessageDigest imd =
new ImmutableMessageDigest(
MessageDigest.getInstance(/* ... */)
);Once you obtain an ImmutableMessageDigest instance, you can perform the hashing:
// ImmutableMessageDigest imd = ...
Bytes result = new Hash(imd, new PlainText("password123"));You can also use ImmutableMessageDigest's fluid API:
// ImmutableMessageDigest imd = ...
byte[] result = imd.update(new PlainText("password123")).digest();You can pass the result of one hashing operation as an argument to another.
Suppose we wanted to compute the following hash:
H(H(b1), b2, b3)
This is how it would be done with Caesar:
// byte[] b1 = ...
// byte[] b2 = ...
// byte[] b3 = ...
// ImmutableMessageDigest imd = ...
Bytes result =
new Hash(
imd,
new Hash(
imd,
() -> b1
),
() -> b2,
() -> b3
);This is how you compute HMAC("Key", "Message") with Caesar, using the
SHA-256 hash function:
Bytes hmac =
new Hmac(
new ImmutableMessageDigest(
MessageDigest.getInstance("SHA-256")
),
new PlainText("Key"),
new PlainText("Message")
);Use the release script with the following arguments:
-
release- the next release version -
snapshot- the next snapshot version -
dryRun(optional) - if set totrue, the changes will not be pushed to the remote repository
Example:
./release.sh 0.1.1 0.1.2-SNAPSHOT