Если я вас правильно понял, у вас есть некоторые данные, которые вы хотите зашифровать и распределить ключ шифрования, разбитый на n «частей ключа». (В вашем случае 2 части)
Для этого вы можете использовать разделение на основе XOR, вот как это работает:
Вы предоставляете необходимое количество частей - n, а секретный ключ - K. Чтобы сгенерировать n частей вашего ключа, вам нужно создать (n - 1) случайные числа: R1, R2, R3,. , , , Rn − 1. Для этого вы можете использовать генератор чисел SecureRandom, который предотвратит дублирование. Когда вы используете функцию XOR для этих частей Rn-1 и ваш ключ - K:
Rn = R1 ⊕ R2 ⊕ R3 ⊕. , , ⊕ Rn − 1 ⊕ K
Теперь у вас есть n фигур: R1, R2, R3,…, Rn-1, Rn, и вы можете уничтожить K. Эти фрагменты могут быть распространены в вашем коде или отправлены пользователям.
Чтобы собрать ключ, мы используем операцию XOR на наших Rn-компонентах:
K = R1 ⊕ R2 ⊕ R3 ⊕. , , ⊕ Rn − 1 ⊕ Rn
При использовании функции XOR (⊕) каждый фрагмент по своей сути важен для восстановления ключа; если какие-либо биты в любом из фрагментов изменены, ключ не подлежит восстановлению.
Для получения дополнительной информации и кода вы можете взглянуть на утилиту Android, которую я написал для этой цели:
Проект GitHub: https://github.com/aivarsda/Secret-Key-Split-Util
Также вы можете попробовать демонстрационное приложение Secret Key Splitter, которое использует эту Утилиту:
GooglePlay: https://play.google.com/store/apps/details?id=com.aivarsda.keysplitter