A Java implementation of multihash.
Simply clone this repository.
Multihash b58 = Multihash.decode("QmatmE9msSfkKxoffpHwNLNKgwZG8eT9Bud6YoPab52vpy");
Multihash b36 = Multihash.decode("kmue2y4illvr0m3lt8x6z8iwghtxlzdmkjh957p5rr5cdr9243ugc");
Note that this library only decodes & encodes Multihashes, and does not actually include any implementations of the hash functions themselves.
Consumers of this library can use different implementations for different reasons. Here are a few possible implementation choices for each Multihash.Type
:
- JDK's
MessageDigest
supports (at least) these:- md5 = MD5
- sha1 = SHA-1
- sha2-224 = SHA-224
- sha2-256 = SHA-256
- sha2-384 = SHA-384
- sha2-512 = SHA-512
- sha2-512-224 = SHA-512/224
- sha2-512-256 = SHA-512/256
- sha3_224 = SHA3-224
- sha3_256 = SHA3-256
- sha3_512 = SHA3-512
- Google Guava's Hashing offers intentionally only these:
- md5 =
@Deprecated Hashing.md5()
- sha1 =
@Deprecated Hashing.sha1()
- sha2_256 =
Hashing.sha256()
- sha2_512 =
Hashing.sha512()
- murmur3 =
Hashing.murmur3_32_fixed()
- md5 =
- Google Tink
- AES-CMAC, see Multicodec Issue #368
- BouncyCastle
- blake2*
- blake3*
- shake-*
- ripemd-*
- Apache Commons Codec
- blake3*
- murmur3
- Jacksum
- skein*
- ...
Please contribute an update to this list if you know of any other related libraries.
You can use this project by building the JAR file as specified below, or by using JitPack (also supporting Gradle, SBT, etc).
for Maven, you can add the follwing sections to your POM.XML:
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.github.multiformats</groupId>
<artifactId>java-multihash</artifactId>
<version>$LATEST_VERSION</version>
</dependency>
</dependencies>
mvn test
mvn package
will build a JAR file with Maven dependency information.
The version number is specified in the pom.xml
file and must be changed in order to be accurately reflected in the JAR file manifest. A git tag must be added in the format "vx.x.x" for JitPack to work.
Captain: @ianopolous.
Contributions welcome. Please check out the issues.
Check out our contributing document for more information on how we work, and about contributing in general. Please be aware that all interactions related to multiformats are subject to the IPFS Code of Conduct.
Small note: If editing the README, please conform to the standard-readme specification.
MIT © 2015 Ian Preston