paras_zalariya12 Ответов: 3

Я получаю текст, пока декодирую свою систему паролей.char[]


у меня есть одна регистрационная форма, и после успешной регистрации, когда я попытался получить пароль в тот раз, я получаю пароль как систему.Char[](кодированный текст : U3lzdGVtLkNoYXJbXQ==).

Зашифровать
public static string encode(string text)
    {
        string returntext = "";
        if (text != null && text != "")
        {
            byte[] mybyte = System.Text.Encoding.UTF8.GetBytes(text);
            returntext = System.Convert.ToBase64String(mybyte);

            String DecodeText = decode(returntext);

        }
        return returntext;
    }


Код Декодирования

public static string decode(string text)
    {
        string returntext = "";
        if (text != null && text != "")
        {
            byte[] mybyte = System.Convert.FromBase64String(text);
            returntext = System.Text.Encoding.UTF8.GetString(mybyte);
        }
        return returntext;
    }


Я проверил в своей локальной среде, но она работает нормально, но когда я проверяю свой список клиентов, есть много пользователей, которые входят в систему.Char[] закодированный текст(как U3lzdGVtLkNoYXJbXQ==) так что, пожалуйста, помогите мне, в каком случае это возможно ?

Что я уже пробовал:

я пробовал много способов, и я также гуглил много тем, но не смог решить эту проблему.

Richard Deeming

NB: Base64-это совершенно определенно НЕ подходящий метод "защиты" ваших сохраненных паролей.

Вы храните пароли в виде обычного текста. Не делай этого.

Безопасная Аутентификация Паролем Объясняется Просто[^]
Соленое хэширование паролей - делаем это правильно[^]

phil.o

Непонятно, чего вы пытаетесь достичь. После аутентификации, зачем вам нужно хранить какие-либо следы пароля? Наличие его в памяти в нехешированной форме является серьезной проблемой безопасности. Пожалуйста, уточните свой вопрос и уточните, в чем именно заключается ваша цель и в чем заключается ее проблема.

paras_zalariya12

на самом деле это старое приложение Cms, и обычный пользователь(у которого нет знаний о разработке) никогда не вводит пароль, как System.char [], верно?
многие пользователи хотят забыть пароль, и они получают пароль System.char [], который не подходит ни для одного приложения.
поэтому я пальцем вынимаю эту штуку туда где она находится вставляю вот так

3 Ответов

Рейтинг:
2

jimmson

Вы посылаете к своему encode() метод string "Система.Обуглить[]Помимо того, что то, что вы пытаетесь сделать, вероятно, неправильно (или, по крайней мере, неясно), проблема, с которой вы сталкиваетесь, возникает еще до того, как вы получите доступ к encode метод.


Рейтинг:
2

paras_zalariya12

Я нашел решение благодаря @F-Es Sitecore за то, что он дал мне направление, и я нашел решение.
В моем коде какой-то глюк на другой странице, как показано ниже


const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
           Cust.Password = Common.encode(Enumerable.Repeat(chars, 5).Select(s => s[random.Next(s.Length)]).ToArray().ToString());



Из-за вышеприведенного кода он вводит Неправильный пароль.
Спасибо


Рейтинг:
1

F-ES Sitecore

Проблема заключается в том, что называется "кодировать". Я предполагаю, что Вы делаете ToString на чем-то только для того, чтобы заставить код компилироваться. Например;

string password = "123456";
var toEncode = password.ToArray();
string encoded = encode(toEncode);


Если вы получаете массив символов откуда-то (я не знаю, где, я не могу получить доступ к вашему коду), то вышеописанное не будет компилироваться. Я предполагаю, что для того, чтобы заставить его компилироваться, вы сделали что-то вроде этого

string password = "123456";
var toEncode = password.ToArray().ToString();
string encoded = encode(toEncode);


..и это даст вам вашу проблему. Вам нужно отслеживать весь код, который вызывает вашу функцию, и посмотреть, есть ли вероятность, что вы пытаетесь кодировать массив символов, который был преобразован в String.