public static char[] getSaltedHash(String algorithm, char[] salt, char[] msg) {
		MessageDigest messageDigest = getMessageDigest(algorithm);
		byte[] msgBytes = new byte[msg.length + salt.length];
		try {
			for (int i = 0; i < salt.length; i++) {
				msgBytes[i] = (byte) salt[i];
			}
			for (int i = 0; i < msg.length; i++) {
				msgBytes[i + salt.length] = (byte) msg[i];
			}

			char[] hash = hexDump(messageDigest.digest(msgBytes));

			char[] saltedHash = new char[hash.length + SALT_LENGTH];
			System.arraycopy(salt, 0, saltedHash, 0, salt.length);
			System.arraycopy(hash, 0, saltedHash, salt.length, hash.length);
			return saltedHash;
		}
		finally {
			// attempt to remove message from memory since it may be a password.
			Arrays.fill(msgBytes, (byte) 0);
		}
	}
Generate salted hash for specified message.  Supplied salt is 
returned as prefix to returned hash.
@param algorithm message digest algorithm
@param salt digest salt (use empty string for no salt)
@param msg message text
@return salted hash using specified salt which is
returned as a prefix to the hash
@throws IllegalArgumentException if specified algorithm is not supported
@see MessageDigest for supported hash algorithms
Ghidra/Framework/FileSystem/src/main/java/ghidra/util/HashUtilities.java