/** Utilities around cryptographic digests */
public class DigestUtils {
+ public final static String MD5 = "MD5";
+ public final static String SHA1 = "SHA1";
+ public final static String SHA256 = "SHA-256";
+ public final static String SHA512 = "SHA-512";
+
private static Boolean debug = false;
// TODO: make it writable
private final static Integer byteBufferCapacity = 100 * 1024;// 100 KB
public static byte[] sha1(byte[] bytes) {
try {
- MessageDigest digest = MessageDigest.getInstance("SHA1");
+ MessageDigest digest = MessageDigest.getInstance(SHA1);
digest.update(bytes);
byte[] checksum = digest.digest();
return checksum;
}
}
+ public static String sha1hex(Path path) {
+ return digest(SHA1, path, byteBufferCapacity);
+ }
+
+ public static String digest(String algorithm, Path path, long bufferSize) {
+ byte[] digest = digestRaw(algorithm, path, bufferSize);
+ return encodeHexString(digest);
+ }
+
public static byte[] digestRaw(String algorithm, Path file, long bufferSize) {
long begin = System.currentTimeMillis();
try {
bb = fc.map(MapMode.READ_ONLY, position, bufferSize);
position = position + bufferSize;
} else {
- bb = fc.map(MapMode.READ_ONLY, position, fileSize - bufferSize);
+ bb = fc.map(MapMode.READ_ONLY, position, fileSize - position);
position = fileSize;
}
md.update(bb);
System.out.println(algorithm + ": " + digest(algorithm, file));
algorithm = "SHA";
System.out.println(algorithm + ": " + digest(algorithm, file));
+ System.out.println(algorithm + ": " + sha1hex(file.toPath()));
algorithm = "SHA-256";
System.out.println(algorithm + ": " + digest(algorithm, file));
algorithm = "SHA-512";