Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1
RSS
Мой алгоритм шифрования
 
Выкладываю сюда мой алгоритм шифрования. Писалось для учебных целей.
В алгоритме используются:
[+] генератор псевдослучайных чисел
[+] Шифр подстановки
[+] шифрование по ключу
[+] хэш-функции

Примерный алгоритм работы:
1. От ключа-строки берется хэш-функция
2. От полученного числа с помощью функции srand(seed) задается последовательность случайных чисел, которая задает правила замены символов в тексте.
3. И так как сгенерированная последовательность чисел зависит только от параметра seed (а это хэш-функция ключа), то это позволяет произвести расшифровку таким же образом.
Код
...
int a = gen_hash(key);
generator(a);
...

Реализовано на C++. Программа предназначена для шифрования текстовых данных. Читает и пишет в файл data.txt. Может шифровать неограниченный объём данных. Алгоритм устойчив к частотному анализу. Сложность взлома определяется длиной пароля. Он может состоять только из маленьких латинских букв.
N = 26^m, где m - длина пароля


Скачать (в архиве исходник и exe-файл):
http://cyberguru007.narod2.ru/code/cryptor.zip

Вопрос: похож ли он на какой-либо существующий алгоритм шифрования ? как легко его будет взломать ?  :D
Изменено: daniel_1024 - 30.07.2011 15:35:21
 
Странная какая-то хэш-функция:
h(S)  =  S[0] + S[1] * P + S[2] * P^2 + S[3] * P^3 + ... + S[N] * P^N

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

И вот, что происходит на одном ключе.
На ключе qwerty
"testme" переходит в   "RFoR#Fn"
"testme1" переходит в  "RFoR#FVn"
 
Что-то серьезное шифровать этим не следует.
Цитата:"похож ли он на какой-либо существующий алгоритм шифрования ?"
Да похож на навороченный алгоритм Цезаря, только для каждой буквы свое смещение по алфавиту.
Взломать его легко, дыр много:
1)Небезопасный хеш, узнав его, фактически владеешь ключом.
2)Если алгоритм держится на генераторе случайных чисел, то атака будет направлена на выяснение способа генерации чисел. На то и он ПСЕВДОслучайный.
3)Взлом по словарю. Вижу, одной и той же букве соответствует одна замена. Так что для этого в длинном образце шифрованного текста какой-нибудь символ принимается за пробел(исходя из его частоты выпадения в русском языке). Затем вычленяются возможные слова по три буквы(как, где, что, и тд.).
Допустим, взяли зашифрованное "VfV", приняли его за "как", получаем V=к,f=а,V=к, это очевидно. Расшифровав две возможные буквы алфавита, мы их используем для расшифровки слов посложнее, где они встречаются. Если выходит "пыкмык", то начальное предположение неверно, или слово было не "как", или же пробел изначально определен неверно.  

Лучше сделай так: для текста длиной n генерируется ключ такой же длины n из случайных символов. Каждый символ текста складывается по модулю 2(аля XOR) с соответствующим символом ключа. Поскольку операция XOR симметрична, повторное сложение с ключом дешифрует текст. При условии что ключ абсолютно случаен, шифр будет криптостойким.
Страницы: 1
Читают тему