|
|
|
Xor'енье пароля
|
|||
|---|---|---|---|
|
#18+
В диалоговом окне есть поле с логином и паролем. Подскажите, как заксорить пароль относительно логина, типа зашифровать? И как потом его вернуть обратно? Проект в Microsoft Visual C++ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 17:51 |
|
||
|
Xor'енье пароля
|
|||
|---|---|---|---|
|
#18+
Я бы предположил циклически по имени, типа result1 =password^name[i%strlen(password)] И также в обратку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 18:23 |
|
||
|
Xor'енье пароля
|
|||
|---|---|---|---|
|
#18+
любознательныйВ диалоговом окне есть поле с логином и паролем. Подскажите, как заксорить пароль относительно логина, типа зашифровать? И как потом его вернуть обратно? Проект в Microsoft Visual C++ в данном контексте ксор - не удачное применение... попытка остановить совсем тупоголовых и ленивых.. кто мало мальски немного знаком со словом пароль, либо логин - считайте обойдёт это если не 5 минут, то за пару сегарет - точно...смысл упираться ??? 1) хранить сам пароль в системе, даже саму возможность его интерпритировать после определённых действий - это зло... лучше хранить некий результат некой необратимой функции над введённым паролем. Даже если кто то и посмотрит в БД (к примеру) - нифига для ся полезной инфы он не вынесет (ну почти)... 2) по поводу функций преобразований - ну тут есть и литература, и творчество и обычная математика... с уважением (круглый) ЗЫ Помню когда то давно, пробежала такая задача... Обойти защиту стэйкера (если не попутал название).. Продвинутый бухгалтер закрыл ентой фигнёй диск своего компа.. Попросило руководство ентой компании - получить доступ.. Техническую сторону опустим...Поразила ошибка программеров при реализации самой идеи, что в свою очередь повлекло дешифровку пароля.. Задача была решена в течении двух вечеров...Если опустить азмовские дебри - то мона свести к следующему... Имеем две функции.. Одна необратимая, берёт пароль и делает из него некий ключ шифрации. Далее вторая функция (обратимая) берёт этот ключ шифрации и первый символ пароля и получает результат, который является ключом для второй буковки и так далее... Результаты второй функции так же заносятся как шифрованная последовательность в хранилище... вроде всё пучком... но роковая ошибка уже прозвучала ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 18:29 |
|
||
|
Xor'енье пароля
|
|||
|---|---|---|---|
|
#18+
Заморачиваться шифрованием не хочу, клиент большего и не требует, необходимо лишь немного подправить чужую прогу. Пробую так. Выдаёт ошибку... Код: plaintext 1. 2. 3. 4. 5. 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++ первый раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 09:53 |
|
||
|
Xor'енье пароля
|
|||
|---|---|---|---|
|
#18+
Если это login в БД, то получившийся пароль может быть невозможным. Я бы использовал шифр-блокнот. Т.е. делать перестановки на множестве допустимых символов. Предположим, что допустимые символы от 0x21 и до 0x79. Делаете вектор из них. Сумма байт пароля - номер перестановки. Перестановки умеет делать STL. ЗЫ. Особо озабоченным секретностью - она больше организационная. А так, наприер, можно добиться того, чтобы одарённый пользователь не залез в базу руками, через какой-нибудь администратор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 10:24 |
|
||
|
Xor'енье пароля
|
|||
|---|---|---|---|
|
#18+
niknameЕсли это login в БД, то получившийся пароль может быть невозможным. Я бы использовал шифр-блокнот. Т.е. делать перестановки на множестве допустимых символов. Предположим, что допустимые символы от 0x21 и до 0x79. Делаете вектор из них. Сумма байт пароля - номер перестановки. Перестановки умеет делать STL. ЗЫ. Особо озабоченным секретностью - она больше организационная. А так, наприер, можно добиться того, чтобы одарённый пользователь не залез в базу руками, через какой-нибудь администратор. Мне и написанного кода было бы достаточно. Ошибку бы исправить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 10:31 |
|
||
|
Xor'енье пароля
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 11:03 |
|
||
|
Xor'енье пароля
|
|||
|---|---|---|---|
|
#18+
Сделал так. Вроде работает. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 13:23 |
|
||
|
Xor'енье пароля
|
|||
|---|---|---|---|
|
#18+
2любознательный: работает, но "вопреки"... 1. все должно глючить ибо надо не memcpy (она не скопирует нулевой ограничитель в твоем примере), а strcpy. тем более что в цикле ты юзаешь strlen(password). чтобы pfзаработал твой вариант - надо уж тогда strlen(dlg.m_sPwd) тогда: 2.везде, где выделяется память - выделяй на 1 больше! ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 13:49 |
|
||
|
Xor'енье пароля
|
|||
|---|---|---|---|
|
#18+
kolobok0 с уважением (круглый) ЗЫ Помню когда то давно, пробежала такая задача... Обойти защиту стэйкера (если не попутал название).. Продвинутый бухгалтер закрыл ентой фигнёй диск своего компа.. Попросило руководство ентой компании - получить доступ.. Техническую сторону опустим...Поразила ошибка программеров при реализации самой идеи, что в свою очередь повлекло дешифровку пароля.. Задача была решена в течении двух вечеров...Если опустить азмовские дебри - то мона свести к следующему... Имеем две функции.. Одна необратимая, берёт пароль и делает из него некий ключ шифрации. Далее вторая функция (обратимая) берёт этот ключ шифрации и первый символ пароля и получает результат, который является ключом для второй буковки и так далее... Результаты второй функции так же заносятся как шифрованная последовательность в хранилище... вроде всё пучком... но роковая ошибка уже прозвучала Не понял в чем ошибка?. или ключ шифрации первой функции тоже хранился? лучше хранить некий результат некой необратимой функции над введённым паролем. лучше не просто хранить а шифровать ей полезные данные.. иначе вскрывается выполнением необратимой функции над своим паролем и записью полученного ключа в хранилище.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 15:23 |
|
||
|
Xor'енье пароля
|
|||
|---|---|---|---|
|
#18+
Палестинец...вторая функция (обратимая) берёт этот ключ шифрации и первый символ пароля и получает результат, который является ключом для второй буковки и так далее... Результаты второй функции так же заносятся как шифрованная последовательность в хранилище... Не понял в чем ошибка?. или ключ шифрации первой функции тоже хранился? .. вторая функция обратима.. и если присмотреться, то входные ключи и полученный результат известны для всех символов кроме первого...ну а первый методом перебора - 255 значений для компа раз плюнуть... с уважением (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 19:26 |
|
||
|
Xor'енье пароля
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2006, 11:52 |
|
||
|
Xor'енье пароля
|
|||
|---|---|---|---|
|
#18+
2любознательный: так вообще делать нельзя memcpy(login, dlg.m_sLogin, strlen(dlg.m_sLogin)); поскольку пытаешься копировать из объекта, а надо из буфера строки, т.е. dlg.m_sLogi.c_str() тогда и strcpy заработает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2006, 11:56 |
|
||
|
Xor'енье пароля
|
|||
|---|---|---|---|
|
#18+
и ещё вопросик. Заксоренная строка получается из непечатаемых символов. Посше шифрования я записываю её в реестр. Потом считываю. Встречаются такие результаты ксоренья, что прочитать их уже не получается. Читаю так Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2006, 11:59 |
|
||
|
Xor'енье пароля
|
|||
|---|---|---|---|
|
#18+
adm.Beat2любознательный: так вообще делать нельзя memcpy(login, dlg.m_sLogin, strlen(dlg.m_sLogin)); поскольку пытаешься копировать из объекта, а надо из буфера строки, т.е. dlg.m_sLogi.c_str() тогда и strcpy заработает Код: plaintext ошибка error C2228: left of '.c_str' must have class/struct/union type type is 'char [1024]' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2006, 12:02 |
|
||
|
Xor'енье пароля
|
|||
|---|---|---|---|
|
#18+
Код: plaintext error C2039: 'c_str' : is not a member of 'ATL::CStringT<BaseType,StringTraits>' with [ BaseType=char, StringTraits=StrTraitMFC<char> ] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2006, 12:21 |
|
||
|
Xor'енье пароля
|
|||
|---|---|---|---|
|
#18+
strcpy нельзя применять из-за того, что в получившемся пароле может быть 0. Ну а в реестре надо сохранять что-то типа CString toReestr; char buf[3]; for(int i=0; i <passwordLen; i++) { sprintf(buf,"%02x",pwd ); toReestr+=buf; } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2006, 13:42 |
|
||
|
Xor'енье пароля
|
|||
|---|---|---|---|
|
#18+
подскажите, как получить, из int Number = 56 строку 056. Т.е. Чтобы все числа переводимые в строку имели 3 цифры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2006, 14:25 |
|
||
|
Xor'енье пароля
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2006, 12:52 |
|
||
|
Xor'енье пароля
|
|||
|---|---|---|---|
|
#18+
любознательныйподскажите, как получить, из int Number = 56 строку 056. Т.е. Чтобы все числа переводимые в строку имели 3 цифры. Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2006, 13:11 |
|
||
|
Xor'енье пароля
|
|||
|---|---|---|---|
|
#18+
maXmo Код: plaintext малесь ошибся. [SRC c++] s[0]=(numer%1000)/100+'0'; s[1]=(numer%100)/10+'0'; s[2]=(numer%10)+'0'; s[3]=0; /SRC] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2006, 13:12 |
|
||
|
Xor'енье пароля
|
|||
|---|---|---|---|
|
#18+
Спасибо всем за помощь. Сделал совсем простую шифрация с помощью _strrev и _swab. С разбегу на гору забраться не получилось... Без основ visual c++, знания типов, их конвертации и т.п. дальше в дебри лезть не буду. Все способы, которые провобал к хорошему не привели... Т.е. получается, что только каждый 5-й программирующий на визуал си кодит трезво. Придётся надыбать книженцию и с самого начала поизучать. Сказалось полное отсутствие опыта работы с WinApi и незнание всех нюансов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2006, 13:32 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34194305&tid=2029815]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
174ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 474ms |

| 0 / 0 |
