Skip to content
A wrapper class for iOS Address Book access that converts private contact information into hashed tokens.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Hashed Contacts

Hashed Contacts is a drop-in iOS library that provides a wrapper around the Address Book frameworks designed to ensure the privacy of user data. It does this in two ways:

  1. Before access is ever made to the Address Book the user will first be prompted for permission
  2. Once access is granted the library returns hashed tokens representing the user's private data rather than the data itself.

These two steps do much to establish user trust with how you treat their data.


Copy the contents of the Source directory into your project. This will include the two main files DTSHashedContactsProvider.m and DTSHashedContactsProvider.h in addition to the localization files.

Add the AddressBook.framework to your project.

Supports iOS 4.0 and above

Replace the value of DTSHashSALT in DTSHashedContactsProvider.m and remove the warning.


See a full working example of how this library can be used by opening the included in this repository.

To use the library simply initialize an instance of the DTSHashedContactsProvider class. Note: You will need to retain a reference to this instance until you are done loading the user's data.

You may configure this in three ways:

  1. Choose the hashing method used via the hashingMethod property. Options are SHA1 and SHA512
  2. Specify the alert title via the alertTitle property
  3. Specify the alert message via the alertMessage property

A default value for the alert is provided based on the application display name.

Once that is done simply call the desired retrieval method to get your tokens.

[hashedContactsProvider emailTokensWithConfirmation:^(NSArray* tokens) {
//When permission given
} whenDeclined:^{
//When permission denied

The result provided in tokens will look like this:


You can’t perform that action at this time.