An object-oriented approach to cryptography in Java.
An object-oriented approach to cryptography in Java.
This project aims to replace/wrap the following JDK APIs:MessageDigest
,Mac
andCipher
.
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 theSHA-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 to true
, the changes will not be pushed
to the remote repository
Example:
./release.sh 0.1.1 0.1.2-SNAPSHOT