If you look into project.pbxproj, you shall see that every file in the project has a hash
For example
1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
1D60589F0D05DD5A006BFB54 is the hash for the linked foundation framework.
I wonder how these are calculated i.e. what function is used and what meta information besides the file name goes into the input for the hash.