code: import static java.util.Collections.disjoint;
  
  import java.io.IOException;
  import java.io.InputStream;
  import java.security.MessageDigest;
  import java.security.NoSuchAlgorithmException;
  import java.util.Arrays;
  
  import org.junit.Test;
  
  public class PropGen {
  
      public static String digest(byte[] data, String algorithm) {
          try {
              MessageDigest md = MessageDigest.getInstance(algorithm);
              byte[] digest = md.digest(data);
              StringBuilder buf = new StringBuilder();
              for(byte b: digest) {
                  buf.append(Integer.toHexString(0xF & (b >> 4)));
                  buf.append(Integer.toHexString(0xF & (b)));
              }
              return buf.toString();
          } catch (NoSuchAlgorithmException e) {
              throw new IllegalArgumentException(e);
          }
      }
  
      public byte[] load(String res) throws IOException {
          InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(res);
          byte[] buf = new byte[128 << 10];
          int n = is.read(buf);
          return Arrays.copyOf(buf, n);
      }
  
      @Test
      public void printProps() throws IOException {
          byte[] dll32 = load("sjkwinh32.dll");
          String hash32 = digest(dll32, "SHA-256");
  
          byte[] dll64 = load("sjkwinh64.dll");
          String hash64 = digest(dll64, "SHA-256");
  
          System.out.println("dll32.hash: " + hash32);
          System.out.println("dll32.len: " + dll32.length);
          System.out.println("dll64.hash: " + hash64);
          System.out.println("dll64.len: " + dll64.length);
      }
  }
  