Я люблю c # для программирования приложений (я считаю себя промежуточным с c #, и немного меньше с C / C ++, но я только учусь, ничего особенного пока на арене), и мне нравилось, пока я не обнаружил кого-либо«кто понимает MSIL (не простая задача для изучения ни того, ни другого), может декомпилировать мой код.Меня не волнует, кто-то декомпилирует мой код, но моя главная забота - безопасность для будущих пользователей программы.Я знаю, что существуют запутатели, и я даже знаю один или два, которые действительно хороши, я слышу (даже если они только задерживают декомпиляцию).
Например, если я хочу расшифровать что-то с помощью c #, где-то гдев коде ключ должен быть таким, чтобы он представлял опасность для тех, кто использует мою программу (кто-то, кто знает кого-то, кто зашифровал файл с помощью моей программы, может расшифровать его, изучив мой код MSIL, найдя мой ключ).Кроме того, разработка массивных приложений для шифрования / дешифрования (или OpenSSL) безумна с c #, я думаю, по этой причине.
Я имею в виду, что большинство пользователей не будут знать, какой язык использовался для этогоОтлично, но куча людей может программировать nc #, и элита этого народа может читать MSIL, и меньшинство этой элиты хотело бы взломать то, что возможно взломать.Из тех людей, которые любят взламывать, некоторые из них могут делать это с извращенными намерениями (в мире, где мы живем, где нет ценности, это никого не должно удивлять).
Итак, если я хочу создать программучто скачивая файл из интернета, кто-то может помешать передаче и совершить какое-то зло, даже если я использую OpenSSL с c #, потому что где-то в файле c # есть ключ.Я знаю, что избежать взлома, вероятно, невозможно, но похоже, что c # - это очень небезопасный способ.
Это происходит с Java?(Java имеет ту же структуру «интерпретации» и «декомпиляции», что и C #);Я имею в виду тот факт, что ключ виден в Java (каким-то образованным взглядом) где-то в файле сборки?Или же в Java используется какой-либо API на основе C / C ++, который усложняет (намного сложнее) декомпиляцию файла, в котором находится ключ, и, следовательно, затрудняет его получение?
Является ли я единственным вариантом написания моей программыс с / с ++?Потому что, если это так, мой единственный вариант - C ++ Builder, так как это ад, даже пытаться смотреть (и меньше изучать) код MFC / OWL;Я имею в виду: я не могу думать о ком-то, кому могло бы понравиться программирование MFC / OWL.На самом деле, я полагаю, что Assembly может быть более интересным в современном мире программирования.
Итак, я хочу найти кого-то, кто мог бы объяснить мне лучший способ надежно хранить крипто-ключи для шифрования / дешифрования илииспользовать OpenSSL с c #.Или даже с Java.Я хотел бы подтвердить, что C / C ++ - это единственный способ действительно использовать эти функции с некоторой безопасностью по причинам декомпиляции (как и другие скомпилированные языки программирования, например Delphi).
Если кто-нибудь знает сайт, где я могу найтиточную информацию о тонких рассуждениях, которые, как я полагаю, я сделал (особенно те, которые показывают, что я не прав в моем анализе), пожалуйста, сообщите мне.Если кто-то может подтвердить мой анализ, пожалуйста, подтвердите.Если кто-то обнаружит какую-либо дыру в моем анализе, снова, пожалуйста, скажите мне, и где найти больше информации, которая поможет мне лучше понять все это.
Извините за столь длительный вопрос о философском программировании.,
Спасибо,
МакНадди