Первый вопрос здесь после того, как вы нашли так много ответов уже ....Безопасно скрывать закрытый ключ RSA позади #if отладки?
Я сделал класс лицензии, который подписан с использованием RSA. Проверка подписи выполняется с использованием открытого ключа, создавая подпись с использованием закрытого ключа. Поскольку я сам создаю лицензии, сам код подписи/создания не должен находиться в самом классе лицензии (выпущенном коде). Но, с другой стороны, я хотел бы иметь весь код класса и не писать код подписания/создания лицензии в частичном классе, который даже является частью другого проекта (приложение локального менеджера лицензий). Безопасно ли сделать что-то вроде следующего:
public class License {
private const string publicRSA = "whatever";
#if DEBUG
public void CreateLicense()
{
string privateRSA = "whatever again";
// Do license creation stuff below...
}
#endif
// Other license code follows below....
}
Разгадка в том, что в версии закрытый ключ не должен быть виден, а также не код, который создает лицензию, но для меня нет никаких проблем локально запустить приложение диспетчера лицензий, которое использует этот класс в режиме отладки, когда мне нужно сгенерировать лицензию сейчас и затем ...
Я что-то упустил (относительно поведения прекомпилятора в C# ...)? Помимо выпуска случайно отладочной версии, могу ли я выстрелить себе в ногу, сделав это? Есть ли лучшие варианты?
Составленный версия релиз не будет иметь код, который внутри '#if директивы DEBUG', так что я думаю, что это должно быть безопасным для развития. Однако, как только вы начнете выпускать программное обеспечение, я бы удалил все это вместе, чтобы вы случайно не отправили отладочную версию клиенту. –
@ Zohar. После того, как приложение будет выпущено, я все равно использую тот же класс в локальном диспетчере лицензий для генерации лицензий для людей, которые используют выпущенный код. Поэтому я не могу его удалить. –