Security Java Tutorial

import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.security.MessageDigest;
import java.util.Arrays;
public class MainClass {
  public static void main(String[] args) throws Exception {
    authenticatePassword("password");
  }
  private static void authenticatePassword(String password) throws Exception {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    FileInputStream fis = new FileInputStream("password");
    int theByte = 0;
    while ((theByte = fis.read()) != -1) {
      baos.write(theByte);
    }
    fis.close();
    byte[] hashedPasswordWithSalt = baos.toByteArray();
    baos.reset();
    byte[] salt = new byte[12];
    System.arraycopy(hashedPasswordWithSalt, 0, salt, 0, 12);
    MessageDigest md = MessageDigest.getInstance("MD5");
    md.update(salt);
    md.update(password.getBytes("UTF8"));
    byte[] digest = md.digest();
    byte[] digestInFile = new byte[hashedPasswordWithSalt.length - 12];
    System.arraycopy(hashedPasswordWithSalt, 12, digestInFile, 0,
        hashedPasswordWithSalt.length - 12);
    System.out.println(Arrays.equals(digest, digestInFile));
  }
}