What type of checksum is this?

Discussions about UT99
Post Reply
User avatar
PrinceOfFunky
Godlike
Posts: 1078
Joined: Mon Aug 31, 2015 10:31 pm

What type of checksum is this?

Post by PrinceOfFunky » Tue May 07, 2019 3:15 am

UnrealScript gives me this checksum:

Code: Select all

b73132acdd7c95469ac52f4e2264cb3d
for the file "UWeb.dll" that is found inside the "System" folder, can you tell what type of checksum it is?
It has 32 characters so I thought it was an MD5, but the MD5 for that file is:

Code: Select all

59CE64CC09E8F412635B3CF2CD5C61DC
UnrealScript creates a temp file of the original file, in this case the MD5 was:

Code: Select all

D41D8CD98F00B204E9800998ECF8427E
So I'm not sure if the first checksum I posted is not an MD5 or it is the MD5 performed when the file was on a different state.
Pheraps I did this procedure twice and the checksum was the same.

EDIT: Looks like that checksum is the only one that I get for every file, so now i wonder if that is the checksum of the file I specify or of another file.
"Your stuff is known to be buggy and unfinished/not properly tested"

User avatar
sektor2111
Godlike
Posts: 4142
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: What type of checksum is this?

Post by sektor2111 » Wed Jul 17, 2019 5:47 pm

Bump, later indeed because I didn't see any reply
Perhaps is MD5 but... it's pretty useless for me, I'm not interested about stat-logs any and their checksums, and because source-code was pointed already in forum let me list what I could see:

Code: Select all

void AStatLogFile::execGetChecksum( FFrame& Stack, RESULT_DECL )
{
	guard(AStatLogFile::execGetChecksum);
	P_GET_STR_REF(Checksum);
	P_FINISH;

	BYTE Secret[16];	// Must be bytes.  Used by MD5.
	Secret[0] = 'M';
	Secret[5] = 'p';
	Secret[2] = 'y';
	Secret[3] = 'f';
	Secret[1] = '4';
	Secret[11] = 'd';
	Secret[7] = '9';
	Secret[4] = 'G';
	Secret[12] = 'D';
	Secret[6] = '6';
	Secret[9] = 'e';
	Secret[10] = 'J';
	Secret[14] = '1';
	Secret[15] = 'q';
	Secret[8] = 'k';
	Secret[13] = 'V';

	BYTE Digest[16];

	appMD5Update( (FMD5Context*) Context, Secret, 16 );
	appMD5Final( Digest, (FMD5Context*) Context ); // Outputs a 16 byte digest.

	// Copy each byte into a string of arbitrary character size. (UNICODE safe.)
	INT i;
	for (i=0; i<16; i++) {
		*Checksum += FString::Printf(TEXT("%02x"), Digest[i]);
	}

	unguardexec;
}

Post Reply