Cryptography

From GTAMods Wiki
Revision as of 08:41, 15 February 2009 by Sacky (talk | contribs)
Jump to navigation Jump to search

This article explains the Cryptography present in GTA IV.

Hash Algorithms

GTA IV relies on many different hash algorithms work its operation, each for a different purpose. GTA IV's new usage of hashing has allowed it to explore a more binary focused way of hiding data in files, and strings away from plain site.

SHA1

The SHA1 hashing algorithm is used when comparing the files in versions 1.0 and 1.0.1. This check was later removed in 1.0.2.

CRC32

The Cyclic Redundancy Check 32 bit hashing algorithm is used in the GXT file to match text codes with their counterparts. A C++ implementation of GTA IV's CRC32 Hashing Algorithm can be displayed as follows:

<source lang="c++">unsigned int CRC32(char* text) { size_t textLen = strlen(text); int i = 0; unsigned int retHash = 0; if(text[0] == '"') i = 1; for(i;i<textLen;i++) { char ctext = textLen[i]; if(ctext == '"') break; if(ctext - 65 > 25) { if(ctext == '\\') ctext = '/'; } else ctext += 32; retHash = (1025 * (retHash + ctext) >> 6) ^ 1025 * (retHash + ctext); } return 32769 * (9 * retHash ^ (9 * retHash >> 11)); }</soruce>