Я получаю имя пользователя и пароль, с которыми я создаю подключение к веб-службе, а затем использую различные функции, используя эту службу.Сохраняет зашифрованный пароль в памяти для последующего использования в безопасности?
Однако я думал хранить имя пользователя как открытый текст и зашифрованный пароль для более поздней автоматической диагностики, в которой я могу вызвать метод в catch()
, который будет повторно инициализировать соединение, используя то же имя пользователя и дешифрованный пароль.
У меня нет большого опыта в шифровании и расшифровке, но я могу использовать методы, как предлагалось here, что делает их private
.
Также, конечно, я буду заполнять временные переменные, где храню пароль и даже текст TextBox
.
Но я хочу знать, безопасно ли хранить зашифрованный пароль в памяти?
Это не так, сборщик мусора хранит копии в памяти, которые находятся вне досягаемости. И вы не можете «вычеркивать» строки, они неизменяемы. Причина для класса SecureString. –
Вместо этого используйте 1-полосный хэш - SHA1/SHA256. – Kami
Я боюсь, что вам не хватает фона (даже больше, чем я), чтобы сделать это правильно.Пара примечаний: «private» не делает ничего, чтобы удержать хакера (особенно, если они могут проверять память по своему усмотрению), и даже если это может скрыть процедуру шифрования, это будет безопасность через скрытность, «гашение временных переменных», вероятно, не делает на что вы надеетесь (подразумевая, что вы имеете в виду что-то вроде 'string s = plaintext; ...; s = null;'), и если вы держите ключ доступным, вы только минимально блокируете атакующего. Пожалуйста, скажите мне, если что-то неправильно истолковал. – delnan