Скопируйте некоторую простую строку кода с методической точностью и заставьте их читать и интерпретировать ее, как они продвигаются. Они скоро разработают его. Я начал программировать на Acorn Электрон с отрывками кода из журналов Acorn. Я понятия не имел о программировании, когда мне было 6 лет, я раньше копировал текст, но постепенно я изучал то, что означали различные слова.
В методе isEncrypted вы можете попытаться расшифровать сообщение.
Поскольку вы используете заполнение PKCS7, скорее всего, незашифрованное сообщение не удастся расшифровать, поскольку заполнение не соответствует установленному режиму заполнения.
Расшифровка вызовет исключение, и вам придется перехватить это и вернуть false в этом случае .
Существует небольшая вероятность того, что дешифрование будет выполнено (когда сообщение не зашифровано), если данные соответствуют режиму заполнения. Однако это маловероятно.
В этом случае я бы добавил какой-то флаг в зашифрованные данные или добавил некоторые данные в зашифрованное сообщение, поскольку затем я могу удалить их при дешифровании. Это был бы самый надежный способ.
Во-первых, как серьезная проблема, использовать криптографические примитивы самостоятельно - чрезвычайно плохая идея. Вы выбрали режим шифрования электронной кодовой книги, в котором одинаковые блоки открытого текста создают идентичные блоки шифротекста. Посмотрите пример в Википедии .
Тем не менее, простое решение - добавить токен, такой как 'ENC:'
, к зашифрованному паролю. Если вам нужно беспокоиться о злонамеренном вмешательстве в файл конфигурации, следует перейти к использованию кода аутентификации сообщения, такого как HMAC.
Поскольку ваша функция возвращает строку, нет причин, по которым вы не можете добавить текстовый код в начало зашифрованных данных, которые может искать функция IsEncrypted, например "MD5ENC" + [зашифрованный текст] .
Недостатком этого является то, что он позволяет любому, у кого есть необработанная строка, знать, какой алгоритм использовался для шифрования. Но поскольку мы все время слышим о том, что безопасность через неизвестность - это вовсе не безопасность. Любой должен иметь возможность узнать , как что-то было зашифровано, и не иметь простого способа взломать это шифрование.
Обратите внимание, что я использую слово должно .
В любом случае, чтобы вернуть к моему первоначальному предложению.