Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Шифрование пароля  (Прочитано 20018 раз)
0 Пользователей и 1 Гость смотрят эту тему.
r-lynx
Гость
« : 15-05-2005 10:31 » 

Поделитесь пожалуйста готовой функцией.
Мне требуется зашифровать пароль, что бы он после шифрования выглядел как бессмысленный набор текста, ну по типу как MD5 шифруется, что бы можно было его потом по ключу расшифровать обратно?
Надо что бы его мне в ini-файле хранить.
Всю голову уже сломал, ничего не смог реализовать Жаль
Записан
Skif
Гость
« Ответ #1 : 15-05-2005 11:52 » 

Готовой ф-цией поделиться не могу, не ту.Улыбаюсь А вот идейку подкину: Если тебе крутой шифр не нужен, реализуй гамирование. Берется ключь (из n символов) и складывается с твоим паролем, причем для простаты можешь сделать их одинаковой длинны. Складываешь по символьно и по модулю.
Как захочешь так и сделаешь, причем гамировать можно несколько раз и с разным ключом.Улыбаюсь Если заморочиться можно непростой шифр сделать.
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #2 : 15-05-2005 12:32 » 

Хранить пароль в ini файле чревато последствиями. Так любой может вскрыть блокнотом этот файл как текст, затереть пароль. И все, твоя система не будет знать, что таковой сушествовал. Так сам делал, когда закрыл случайно у себя на машине Windows 3.11.
Если нет другого выбора, то лучше хранить не сам пароль, а блок памяти, который нужно расшифровывать данным паролем. После расшифровки, проверяется  контрольная сумма данного блока, которая была записана также в этом блоке и была ранее зашифрована. Программа будет по любому считывать этот блок. И если его не обнаружит, это будет считаться взломом. При любой правке, Будет изменяться картина пароля. И если ты примениш достаточно мошное шифрование, вскрыть в лоб будет сложновато. Останется только копание в коде.
Да кстати надо предусмотреть все зашиты от дурака. Когда злоумышлиник заполнит блок например всеми нулями.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
r-lynx
Гость
« Ответ #3 : 15-05-2005 13:53 » 

Ну, я не думаю, что мне надо вот все на столько глобально применять это.
Просто я пройдусь по задаче еще раз:
Конктертно, а этом ini-файле у меня будет хранится логин и пароль для доступа через эту программу к какому нибудь ресурсу, пусть даже для примера для авторизации в базе MySQL, я просто не хочу его хранить в чистом виде.
Заговорил о пароле я с одной целью, на самом деле, я хочу там сделать вот так, чуть более хитро, в этой строке, текстовой, будет сразу и логин и пароль, разделенный каким нибудь спец-символом, для меня, ну например: "vasya$$password".
То что в кавычках сразу и логин и пароль, надо его зашифровать, текстом, и кинуть в ини-файл. Почему именно текстом? Что бы можно было его хранить в текстовои ини файле, если бы тут задача шла о бинарных символах, то это бы решелось через раз, я уже столько алогоритмов шифрования перепробывал, с разными ключами дешифрации, и все работали, но вся соль в том, что мне нужен именно текста, т.е. от A-Z,a-z,0-9,!@#$%^&*()_+-= тоже можно. Потому что это в моем понимании текст, и вот поэтому я загшоворил о MD5, там то что мне надо, только оно там без обратной дешифровки.
Тут главное защита от dumb-пользователей.
Записан
Skif
Гость
« Ответ #4 : 15-05-2005 14:33 » 

Ну и гамируй на здоровье. Берешь за модуль кол-во текстовых символов, предворительно пронумеровав их, и складываешь по символьно с каким либо ключом(гаммой). Нумеровать просто, можно вычетать константу из кода символа. Обратно  вычитать.
Записан
r-lynx
Гость
« Ответ #5 : 15-05-2005 14:36 » 

А теперь внимание вопрос:
Исходник есть? Улыбаюсь
На сях, хотя бы самое основное, не могу просто поянть, как это делать.
Записан
Skif
Гость
« Ответ #6 : 15-05-2005 14:48 » 

Я это на ASMе писал.Улыбаюсь
Тебе алгоритм не ясен?
Записан
r-lynx
Гость
« Ответ #7 : 15-05-2005 15:02 » 

Что есть гаммирование/гамма? Улыбаюсь
Записан
Skif
Гость
« Ответ #8 : 15-05-2005 15:12 » 

1.Смотришь таблицу символов ASC
2.Находишь константы которые тебе нужны (грубо говоря перекодируещь все текстовые символы так чтобы они шли по порядку без разрывов)
3.Советую сделать отдельную ф-цию которая будет получать символ и возвращать новый код. (делается с помощью case)
4.Также нужна аналогичная ф-ция но наоборот.
5.Сама прога, запрашивает у пользователя гамму (можно сделать её постоянной) длинной n
далее получаешь свою строку и складываешь посимвольно с гаммой.
Как в алгебре. Например: гамма:5678 строка:5468376425 по модулю 10 (кол-во возможных символов)
5 4 6 8 3 7 6 4 2 5 // строка
+
5 6 7 8 5 6 7 8 5 6 // повторяющаяся гамма
=
0 0 3 6 8 3 3 2 7 1 // результат
Делается цикл до конца строки, внутри цикл до коца гаммы (начинающийся заново, пока строка не кончится)
Что-то вроде, точно не помню, извини.Улыбаюсь
Попробуй в инете поискать наверняка реализация есть.
Записан
r-lynx
Гость
« Ответ #9 : 15-05-2005 17:13 » 

Убей меня Улыбаюсь
Записан
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 16-05-2005 09:14 » 

r-lynx
А вам обязательно нужно самому реализовывать алгоритм? Существующие реализации не подойдут?

Есть очень хорошие свободные реализации алгоритмов шифрования в библиотеке libcrypto (разработана в рамках проекта openssl http://www.openssl.org/), есть реализации в Windows (CryptoAPI).

Для простых задач (умеренный уровень надёжности шифротекста) люди обычно используют алгоритм 3des (тройной DES).  Идею алгоритма и реализацию можно посмотреть в книге Шнайера "Прикладная криптография" (предварительный русский текст есть по адресу http://ssl.stu.neva.ru/psw/crypto/appl_rus/appl_cryp.htm).  Если действительно необходимо иметь свою реализацию, то исходник можно сдуть из книги.  Реализация у Шнайера не оптимизированная, но для шифрования паролей вполне достаточна.
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
EvilsInterrupt
Гость
« Ответ #11 : 20-05-2005 09:54 » new

Делай проще не заморачивайся!

берешь так:
int block = 5;
int key1 = 1;
int key2 = 2;
int key3 = 3
int key4 = 4

int result = (block + key1) % 0x100000000;// т.к. int это 0xFFFFFFFF
result - result ^ key2;
result = (result + key3) % 0x100000000;
result = result ^ key4;

дешифрирование:
result = result ^ key4;
result = (result - key3) % 0x100000000;
result = result ^ key2;
result = (result -key1) % 0x100000000;

Но для серьезных целей это ребячество,но для твоего ини в самый раз!
« Последнее редактирование: 23-05-2005 08:28 от EvilsInterrupt » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines