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