powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Xor'енье пароля
22 сообщений из 22, страница 1 из 1
Xor'енье пароля
    #34194305
Любознательный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В диалоговом окне есть поле с логином и паролем. Подскажите, как заксорить пароль относительно логина, типа зашифровать? И как потом его вернуть обратно?
Проект в Microsoft Visual C++
...
Рейтинг: 0 / 0
Xor'енье пароля
    #34194384
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы предположил циклически по имени, типа result1 =password^name[i%strlen(password)]

И также в обратку
...
Рейтинг: 0 / 0
Xor'енье пароля
    #34194394
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
любознательныйВ диалоговом окне есть поле с логином и паролем. Подскажите, как заксорить пароль относительно логина, типа зашифровать? И как потом его вернуть обратно?
Проект в Microsoft Visual C++

в данном контексте ксор - не удачное применение... попытка остановить совсем тупоголовых и ленивых.. кто мало мальски немного знаком со словом пароль, либо логин - считайте обойдёт это если не 5 минут, то за пару сегарет - точно...смысл упираться ???

1) хранить сам пароль в системе, даже саму возможность его интерпритировать после определённых действий - это зло... лучше хранить некий результат некой необратимой функции над введённым паролем. Даже если кто то и посмотрит в БД (к примеру) - нифига для ся полезной инфы он не вынесет (ну почти)...
2) по поводу функций преобразований - ну тут есть и литература, и творчество и обычная математика...


с уважением
(круглый)
ЗЫ
Помню когда то давно, пробежала такая задача... Обойти защиту стэйкера (если не попутал название).. Продвинутый бухгалтер закрыл ентой фигнёй диск своего компа.. Попросило руководство ентой компании - получить доступ.. Техническую сторону опустим...Поразила ошибка программеров при реализации самой идеи, что в свою очередь повлекло дешифровку пароля.. Задача была решена в течении двух вечеров...Если опустить азмовские дебри - то мона свести к следующему...
Имеем две функции.. Одна необратимая, берёт пароль и делает из него некий ключ шифрации.
Далее вторая функция (обратимая) берёт этот ключ шифрации и первый символ пароля и получает результат, который является ключом для второй буковки и так далее... Результаты второй функции так же заносятся как шифрованная последовательность в хранилище...

вроде всё пучком...
но роковая ошибка уже прозвучала
...
Рейтинг: 0 / 0
Xor'енье пароля
    #34195461
Любознательный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заморачиваться шифрованием не хочу, клиент большего и не требует, необходимо лишь немного подправить чужую прогу.
Пробую так. Выдаёт ошибку...
Код: plaintext
1.
2.
3.
4.
5.
CString login, password;
	login = dlg.m_sLogin;
	password = dlg.m_sPwd;
	for(int i =  0 , t =  0 ; i < strlen(password); password[i++] ^= login[i++]) 
                   if(t > strlen(login)) t =  0 ;
Output
Compiling...
Authorizer.cpp
Authorizer.cpp(513) : warning C4018: '<' : signed/unsigned mismatch
Authorizer.cpp(513) : error C2106: '^=' : left operand must be l-value
Authorizer.cpp(513) : warning C4018: '>' : signed/unsigned mismatch

За код прошу не пинать, пишу на Visual C++ первый раз.
...
Рейтинг: 0 / 0
Xor'енье пароля
    #34195553
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если это login в БД, то получившийся пароль может быть невозможным. Я бы использовал шифр-блокнот. Т.е. делать перестановки на множестве допустимых символов.
Предположим, что допустимые символы от 0x21 и до 0x79. Делаете вектор из них. Сумма байт пароля - номер перестановки. Перестановки умеет делать STL.

ЗЫ. Особо озабоченным секретностью - она больше организационная. А так, наприер, можно добиться того, чтобы одарённый пользователь не залез в базу руками, через какой-нибудь администратор.
...
Рейтинг: 0 / 0
Xor'енье пароля
    #34195576
Любознательный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niknameЕсли это login в БД, то получившийся пароль может быть невозможным. Я бы использовал шифр-блокнот. Т.е. делать перестановки на множестве допустимых символов.
Предположим, что допустимые символы от 0x21 и до 0x79. Делаете вектор из них. Сумма байт пароля - номер перестановки. Перестановки умеет делать STL.

ЗЫ. Особо озабоченным секретностью - она больше организационная. А так, наприер, можно добиться того, чтобы одарённый пользователь не залез в базу руками, через какой-нибудь администратор.
Мне и написанного кода было бы достаточно. Ошибку бы исправить...
...
Рейтинг: 0 / 0
Xor'енье пароля
    #34195670
Любознательный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
CString login, password;
	login = dlg.m_sLogin;
	password = dlg.m_sPwd;
	for(int i =  0 , t =  0 ; i < strlen(password); password[i++] ^= login[t++])  //вместо t++ было i++
                   if(t > strlen(login)) t =  0 ;
Всё равно не работает
...
Рейтинг: 0 / 0
Xor'енье пароля
    #34196360
Любознательный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал так. Вроде работает.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
char *login = new char[strlen(dlg.m_sLogin)];
memcpy(login, dlg.m_sLogin, strlen(dlg.m_sLogin));
char *password = new char[strlen(dlg.m_sPwd)];
memcpy(password, dlg.m_sPwd, strlen(dlg.m_sPwd));
for(int i =  0 , t =  0 ; i < strlen(password); password[i++] ^= login[t++]) 
{
	if(t > strlen(login)) t =  0 ;
}
memcpy(buff, password, strlen(buff));
delete []login;
delete []password;
...
Рейтинг: 0 / 0
Xor'енье пароля
    #34196497
adm.Beat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2любознательный:
работает, но "вопреки"...

1. все должно глючить ибо надо не memcpy (она не скопирует нулевой ограничитель в твоем примере), а strcpy. тем более что в цикле ты юзаешь strlen(password). чтобы pfзаработал твой вариант - надо уж тогда strlen(dlg.m_sPwd)

тогда:
2.везде, где выделяется память - выделяй на 1 больше! ;)
...
Рейтинг: 0 / 0
Xor'енье пароля
    #34196998
Фотография Палестинец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0

с уважением
(круглый)
ЗЫ
Помню когда то давно, пробежала такая задача... Обойти защиту стэйкера (если не попутал название).. Продвинутый бухгалтер закрыл ентой фигнёй диск своего компа.. Попросило руководство ентой компании - получить доступ.. Техническую сторону опустим...Поразила ошибка программеров при реализации самой идеи, что в свою очередь повлекло дешифровку пароля.. Задача была решена в течении двух вечеров...Если опустить азмовские дебри - то мона свести к следующему...
Имеем две функции.. Одна необратимая, берёт пароль и делает из него некий ключ шифрации.
Далее вторая функция (обратимая) берёт этот ключ шифрации и первый символ пароля и получает результат, который является ключом для второй буковки и так далее... Результаты второй функции так же заносятся как шифрованная последовательность в хранилище...

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

лучше хранить некий результат некой необратимой функции над введённым паролем.
лучше не просто хранить а шифровать ей полезные данные.. иначе вскрывается выполнением необратимой функции над своим паролем и записью полученного ключа в хранилище..
...
Рейтинг: 0 / 0
Xor'енье пароля
    #34197934
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Палестинец...вторая функция (обратимая) берёт этот ключ шифрации и первый символ пароля и получает результат, который является ключом для второй буковки и так далее... Результаты второй функции так же заносятся как шифрованная последовательность в хранилище...

Не понял в чем ошибка?. или ключ шифрации первой функции тоже хранился?

..

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

с уважением
(круглый)
...
Рейтинг: 0 / 0
Xor'енье пароля
    #34199258
Любознательный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adm.Beat2любознательный:
работает, но "вопреки"...

1. все должно глючить ибо надо не memcpy (она не скопирует нулевой ограничитель в твоем примере), а strcpy. тем более что в цикле ты юзаешь strlen(password). чтобы pfзаработал твой вариант - надо уж тогда strlen(dlg.m_sPwd)

тогда:
2.везде, где выделяется память - выделяй на 1 больше! ;)
На strcpy выдёт такую ошибку:
error C2664: 'strcpy' : cannot convert parameter 1 from 'CString' to 'char *'
Так я правильно исправил?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
char *login = new char[strlen(dlg.m_sLogin)+ 1 ];
memcpy(login, dlg.m_sLogin, strlen(dlg.m_sLogin));
char *password = new char[strlen(dlg.m_sPwd)+ 1 ];
memcpy(password, dlg.m_sPwd, strlen(dlg.m_sPwd));
for(int i =  0 , t =  0 ; i < strlen(dlg.m_sPwd); password[i++] ^= login[t++]) 
{
	if(t > strlen(login)) t =  0 ;
}
memcpy(buff, password, strlen(buff));
delete []login;
delete []password;
...
Рейтинг: 0 / 0
Xor'енье пароля
    #34199275
adm.Beat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2любознательный:
так вообще делать нельзя
memcpy(login, dlg.m_sLogin, strlen(dlg.m_sLogin));
поскольку пытаешься копировать из объекта, а надо из буфера строки, т.е. dlg.m_sLogi.c_str()

тогда и strcpy заработает
...
Рейтинг: 0 / 0
Xor'енье пароля
    #34199288
Любознательный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и ещё вопросик.
Заксоренная строка получается из непечатаемых символов. Посше шифрования я записываю её в реестр. Потом считываю. Встречаются такие результаты ксоренья, что прочитать их уже не получается.
Читаю так
Код: plaintext
1.
if(RegQueryValueEx(hk,"DefaultPassword", 0 ,&type,(LPBYTE)buff,&size)==ERROR_SUCCESS)
Как преобразовать полученную ксоренную строку в последовательность аскии кодов, разделённых, например, запятой, чтобы потом записать в реестр?
...
Рейтинг: 0 / 0
Xor'енье пароля
    #34199302
Любознательный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adm.Beat2любознательный:
так вообще делать нельзя
memcpy(login, dlg.m_sLogin, strlen(dlg.m_sLogin));
поскольку пытаешься копировать из объекта, а надо из буфера строки, т.е. dlg.m_sLogi.c_str()

тогда и strcpy заработает
Код: plaintext
memcpy(password, dlg.m_sPwd, strlen(dlg.m_sPwd.c_str()));

ошибка
error C2228: left of '.c_str' must have class/struct/union type type is 'char [1024]'
...
Рейтинг: 0 / 0
Xor'енье пароля
    #34199395
Любознательный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
strcpy(login, dlg.m_sLogin.c_str());
ошибка
error C2039: 'c_str' : is not a member of 'ATL::CStringT<BaseType,StringTraits>'
with
[
BaseType=char,
StringTraits=StrTraitMFC<char>
]
...
Рейтинг: 0 / 0
Xor'енье пароля
    #34199875
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
strcpy нельзя применять из-за того, что в получившемся пароле может быть 0.
Ну а в реестре надо сохранять что-то типа
CString toReestr;
char buf[3];
for(int i=0; i <passwordLen; i++)
{
sprintf(buf,"%02x",pwd );
toReestr+=buf;
}
...
Рейтинг: 0 / 0
Xor'енье пароля
    #34200096
Любознательный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подскажите, как получить, из int Number = 56 строку 056.
Т.е. Чтобы все числа переводимые в строку имели 3 цифры.
...
Рейтинг: 0 / 0
Xor'енье пароля
    #34202697
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
strcpy(login, dlg.m_sLogin);
у него есть оператор преобразования типа.
...
Рейтинг: 0 / 0
Xor'енье пароля
    #34202813
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
любознательныйподскажите, как получить, из int Number = 56 строку 056.
Т.е. Чтобы все числа переводимые в строку имели 3 цифры.
Код: plaintext
1.
2.
3.
4.
s[ 0 ]=numer/ 100 ;
s[ 1 ]=(numer% 100 )/ 10 ;
s[ 2 ]=(numer% 10 );
s[ 3 ]= 0 ;
...
Рейтинг: 0 / 0
Xor'енье пароля
    #34202819
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo
Код: plaintext
strcpy(login, dlg.m_sLogin);
у него есть оператор преобразования типа.

малесь ошибся.

[SRC c++]
s[0]=(numer%1000)/100+'0';
s[1]=(numer%100)/10+'0';
s[2]=(numer%10)+'0';
s[3]=0;
/SRC]
...
Рейтинг: 0 / 0
Xor'енье пароля
    #34202936
Любознательный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем за помощь.
Сделал совсем простую шифрация с помощью _strrev и _swab.
С разбегу на гору забраться не получилось... Без основ visual c++, знания типов, их конвертации и т.п. дальше в дебри лезть не буду. Все способы, которые провобал к хорошему не привели... Т.е. получается, что только каждый 5-й программирующий на визуал си кодит трезво. Придётся надыбать книженцию и с самого начала поизучать. Сказалось полное отсутствие опыта работы с WinApi и незнание всех нюансов.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Xor'енье пароля
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]