Прежде всего, я упомяну, что я видел модульное тестирование шифрования/дешифрования и Модульное тестирование шифрования и дешифрования в Java.
Я хочу защитить библиотеку, проверив ее лицензию. Лицензия содержит такую информацию, как максимальное количество пользователей, срок действия и так далее.
Проблемы, с которыми я сталкиваюсь:
- Шифровальщик и дешифратор находятся в двух разных кодовых базах. Расшифровщик поставляется вместе с библиотекой, а шифратор — нет, поэтому их трудно использовать в одном наборе тестов!
- В шифраторе используется случайная соль, поэтому даже при одном и том же вводе шифратор каждый раз выдает разные выходные данные, опять же, я не могу утверждать результат.
- По своему назначению дешифратор (чтобы затруднить внедрение другого класса для него) является окончательным классом, и все его методы являются закрытыми, за исключением нескольких точек входа, доступных для пакетов.
Я не хочу тестировать JCE, но я хочу протестировать свой код, который делает:
- Извлечение соли из зашифрованной лицензии,
- Расшифровывает зашифрованную лицензию,
- Десериализует вывод в некоторую структуру данных, содержащую данные лицензии,
Должен ли я создать клон кода с более мягкими ограничениями доступа и протестировать его? Тогда проблема в том, что я не тестирую реальный код, который запускается на клиентских системах.
Есть ли лучшие решения для этого?