Не отправляйте текстовые контактные данные в ваш бэкэнд, если в этом нет необходимости.Для вашего варианта использования вы можете использовать хешированную контактную информацию вместо обычного текста, что позволяет вашему бэкэнду проверить, принадлежит ли этот хеш существующему пользователю вашего приложения, но было бы значительно трудно определить исходную информацию из этого хеша.
Если ваш процесс регистрации работает аналогично Whatsapp, я предполагаю, что вы используете номера телефонов в качестве идентификаторов своих пользователей, в этом случае вам нужно просмотреть все контакты на устройстве, которые имеют номер телефона, хэш каждого изих, и отправьте список хэшей на ваш бэкэнд.Затем бэкэнд проверит каждый хеш, если он равен хешу существующего телефонного номера, и вернет результат клиенту для облегчения приглашений.
Вот пример для создания хеша из строки (в этом MD5случай), но есть много библиотек и опций, которые вы можете выбрать:
public static String md5(String key) {
MessageDigest hash = null;
try {
hash = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
return null;
}
hash.update(key.getBytes());
byte[] digest = hash.digest();
StringBuilder builder = new StringBuilder();
for (int b : digest) {
builder.append(Integer.toHexString((b >> 4) & 0xf));
builder.append(Integer.toHexString((b >> 0) & 0xf));
}
return builder.toString();
}