Моя проблема немного волосатая, и я могу задавать неправильные вопросы, поэтому, пожалуйста, потерпите меня ...
У меня есть устаревшая база данных MySQL, в которой хранятся пользовательские пароли и соли для системы членства. Оба эти значения были хэшированы с использованием среды Ruby - примерно так:
hashedsalt =
Digest :: SHA1.hexdigest ( "- # {Time.now.to_s} - {#} Логин -")
hashedpassword =
Digest :: SHA1.hexdigest ( "# {hashedsalt}: # {пароль}")
Таким образом, оба значения хранятся в виде 40-символьных строк (varchar (40)) в MySQL.
Теперь мне нужно импортировать всех этих пользователей в структуру членства ASP.NET для нового веб-сайта, который использует базу данных SQL Server. Насколько я понимаю, при настройке членства в ASP.NET пароли и соли пользователей также хранятся в базе данных членства (в таблице aspnet_Membership) в виде хэшей SHA1, которые затем кодируются в Base64 (см. здесь для подробной информации) и хранится в виде данных nvarchar (128).
Но из длины хранимых строк в кодировке Base64 (28 символов) кажется, что хэши SHA1, которые генерирует членство ASP.NET, имеют длину всего 20 символов, а не 40. Из какого-то другого чтения, которое я делал, я Я думаю, что это связано с количеством битов на символ / набор символов / кодировки или что-то связанное.
Так есть ли какой-нибудь способ преобразования 40-символьных хэшей SHA1 в 20-символьные, которые я затем могу перенести в новую таблицу данных о членстве в ASP.NET? Я довольно хорошо знаком с членством в ASP.NET, но мне кажется, что я просто пропускаю этот кусок. Однако также может быть известно, что SHA1 в Ruby и SHA1 в .NET несовместимы, поэтому я сражаюсь в проигрышной битве ...
Заранее благодарим за понимание.