Java has a MessageDigest and MessageDigestStream that is used when hashing files and jars. We are in the process of cross compiling tools and we have used digest hashes for directories and files. Because Scala Native needs these things locally we would have to copy your code with attribution.