I have an idea for enhancement of the contact generation principle. It is hard for the app to identify fake contacts it has created, e.g. for later removal. Using a certain name pattern (all names starting with the letter "z") is simple, but the poisoned database also can be easily cleaned. So I would suggest the user to enter a 4-digit PIN at the startup of the app. All contacts will be coded with that PIN so that later fake contacts can be identified only if you know that PIN.
How to do it: Maintain two lists of 1024 names, 1024 surnames and 1024 last names. Now randomly combine them, (gives 20 bits code) and also combine them with the 12 bits generated by the PIN. Together we now have a 32 bit value for each combination. Now calculate a hash from these 32 bit (lookup table or 8bit checksum). And discrard all combinations which have a hash other than one speicific, say 0. Then all fake contacts can be identified and the chance of a false positive (to be removed from the contact list) is 1/256 (in this example with a 8 bit hash) which probably is good enough. One can use a 6-digit pin to further bring it down.
Lists with 1024 Names can easily be obtained/generated. One even can use customizes list according to the nationallity or so.
I have an idea for enhancement of the contact generation principle. It is hard for the app to identify fake contacts it has created, e.g. for later removal. Using a certain name pattern (all names starting with the letter "z") is simple, but the poisoned database also can be easily cleaned. So I would suggest the user to enter a 4-digit PIN at the startup of the app. All contacts will be coded with that PIN so that later fake contacts can be identified only if you know that PIN.
How to do it: Maintain two lists of 1024 names, 1024 surnames and 1024 last names. Now randomly combine them, (gives 20 bits code) and also combine them with the 12 bits generated by the PIN. Together we now have a 32 bit value for each combination. Now calculate a hash from these 32 bit (lookup table or 8bit checksum). And discrard all combinations which have a hash other than one speicific, say 0. Then all fake contacts can be identified and the chance of a false positive (to be removed from the contact list) is 1/256 (in this example with a 8 bit hash) which probably is good enough. One can use a 6-digit pin to further bring it down.
Lists with 1024 Names can easily be obtained/generated. One even can use customizes list according to the nationallity or so.