Давайте попробуем разобраться с открытым текстом. Тогда мы можем попытаться решить это с зашифрованным текстом.
Если под «двоичным кодированным» вы подразумевали двоичное кодирование 5, тогда да. Дробное кодирование 5 и двоичное кодирование 5 имеют открытый текст x ^ 2 + 1.
Если под «массивом, состоящим из E (1), E (0), E (1)», вы подразумевали 3 шифротекста, которые соответственно расшифровываются до 1, 0 и 1, то нет.
Извлечение k-го бита (обозначаемого m_k) числа m из его дробного / целочисленного / двоичного кодирования M (x) = m_ {n-1} x ^ {n-1} + .. . + m_k x ^ k + ... + m_0 эквивалентно нахождению функции F такой, что для заданного k и любого m F (M (x)) = m_k в \ ZZ_2 [x] / ( х ^ п + 1). Такую функцию нетривиально найти. Даже если он существует, он может иметь форму многочлена в 2 ^ n степени, который слишком глубок для гомоморфной оценки.
- Если под «массивом, состоящим из E (1), E (0), E (1)», вы имели в виду 1 зашифрованный текст, который расшифровывается в вектор [1, 0, 1], то нет.
Сначала нужно решить сценарий 2, описанный выше, и успешно извлечь эти отдельные биты. Все остальное - просто зашифрованные, что легко сделать с помощью rotate_rows
в SEAL.