function makeHashFiles($class, $data)
{
    $MD4 = new MD4();
    $NTLMOUT = "";
    $MD5OUT = "";
    $DMD5OUT = "";
    $MD4OUT = "";
    $SHA1OUT = "";
    $DUPMD5OUT = "";
    $DUPNTLMOUT = "";
    $LMOUT = "";
    $SHA256OUT = "";
    for ($i = 0; $i < count($data); $i++) {
        if (strlen($data[$i]) == 0) {
            continue;
        }
        $MD5OUT .= strtoupper(md5($data[$i])) . "\n";
        $DMD5OUT .= strtoupper(md5(md5($data[$i]))) . "\n";
        $DUPMD5OUT .= strtoupper(md5($data[$i] . $data[$i])) . "\n";
        $MD4OUT .= strtoupper($MD4->Calc($data[$i])) . "\n";
        $SHA1OUT .= strtoupper(sha1($data[$i])) . "\n";
        $ntlmString = "";
        for ($j = 0; $j < strlen($data[$i]); $j++) {
            $ntlmString .= $data[$i][$j] . chr(0);
        }
        $NTLMOUT .= strtoupper($MD4->Calc($ntlmString)) . "\n";
        $DUPNTLMOUT .= strtoupper($MD4->Calc($ntlmString . $ntlmString)) . "\n";
        $LMOUT .= LMhash($data[$i]) . "\n";
        $SHA256OUT .= hash('sha256', $data[$i]) . "\n";
    }
    file_put_contents("Hashes-MD4-{$class}.txt", $MD4OUT);
    file_put_contents("Hashes-MD5-{$class}.txt", $MD5OUT);
    file_put_contents("Hashes-DMD5-{$class}.txt", $DMD5OUT);
    file_put_contents("Hashes-DupMD5-{$class}.txt", $DUPMD5OUT);
    file_put_contents("Hashes-SHA1-{$class}.txt", $SHA1OUT);
    file_put_contents("Hashes-NTLM-{$class}.txt", $NTLMOUT);
    file_put_contents("Hashes-DupNTLM-{$class}.txt", $DUPNTLMOUT);
    file_put_contents("Hashes-LM-{$class}.txt", $LMOUT);
    file_put_contents("Hashes-SHA256-{$class}.txt", $SHA256OUT);
}
function generateNTLMTestWordlistHashes($numPasswords, $passLength, $charset, $prefix) {
    $MD4 = new MD4;
    // Generate one password for every password up to passLength.
    $wordlistContents = "";
    $hashlistContents = "";
    
    $lengthCharset = "1234567890";
    
    for ($pl = 0; $pl < $passLength; $pl++) {
        $passString = "";
        // No null padding, for the wordlist file.
        $passStringWordlist = "";
        for ($length = 0; $length < $pl; $length++) {
            //$newCharacter = $charset[rand(0, strlen($charset) - 1)];
            $newCharacter = $lengthCharset[$length % 10];
            $passString .= $newCharacter . chr(0);
            $passStringWordlist .= $newCharacter;
        }
        $wordlistContents .= $passStringWordlist . "\n";
        $hashlistContents .= $MD4->Calc($passString) . "\n";
    }
    
    // Now, generate random passwords until the specified number.
    
    for ($password = 0; $password < $numPasswords; $password++) {
        $tempPassLen = rand(0, $passLength);
        $passString = "";
        $passStringWordlist = "";
        for ($length = 0; $length < $tempPassLen; $length++) {
            $newCharacter = $charset[rand(0, strlen($charset) - 1)];
            $passString .= $newCharacter . chr(0);
            $passStringWordlist .= $newCharacter;
        }
        $wordlistContents .= $passStringWordlist . "\n";
        $hashlistContents .= $MD4->Calc($passString) . "\n";
    }
    file_put_contents($prefix . ".pass", $wordlistContents);
    file_put_contents($prefix . ".hash", $hashlistContents);
}