Что касается хэширования, существуют встроенные библиотеки для выполнения операций хеширования (во многом аналогичные крипто-библиотекам), которые делают довольно простым хеширование значения для хранилища.
В дополнение к изучению этих библиотек, вам также следует рассмотреть возможность добавления "соли" к хешам, что по сути означает добавление некоторых дополнительных данных к хешируемому значению до хэширования и добавляет дополнительный уровень безопасности. Таким образом, даже если злоумышленник знает, какой алгоритм хеширования вы использовали, он не сможет легко узнать, как вы засолили данные, прежде чем их хешировать.
Еще одна вещь, которую следует учитывать, - это использовать System.Security.SecureString для перемещения этих защищенных значений в незашифрованном виде / не хэшируемых в памяти. Использование стандартной строки означает, что данные, содержащиеся в строке, находятся в куче в виде простого текста и могут фактически оставаться там некоторое время даже после того, как строка выходит из области видимости. Если кто-то может получить дамп памяти с компьютера, он / она сможет извлечь эти незащищенные данные. В некоторых случаях это может быть излишним, но на что-то посмотреть.