rendered paste bodyC++:
bool Decode(const wxString& hash) {
if (hash.Length() != MD4HASH_LENGTH * 2) {
return false;
}
for ( size_t i = 0; i < MD4HASH_LENGTH * 2; i++ ) {
unsigned char word = toupper(hash[i]);
if ((word >= '0') && (word <= '9')) {
word -= '0';
} else if ((word >= 'A') && (word <= 'F')) {
word -= 'A' - 10;
} else {
// Invalid chars
return false;
}
if (i % 2 == 0) {
m_hash[i/2] = word << 4;
} else {
m_hash[i/2] += word;
}
}
return true;
}
vs perl:
sub hash_string {
$i = 0;
$final_string = "";
while ($i < 32) {
$final_string = $final_string . &byte_string(hex(substr($_[0],$i,2)));
$i += 2;
}
$final_string;
}