id: Гость   вход   регистрация
текущее время 21:17 17/11/2018
Автор темы: Morfeys, тема открыта 01/02/2018 17:26 Печать
Категории: криптография, алгоритмы, хэширование
https://www.pgpru.com/Форум/Криптография/Простойпотоковыйшифрсжатиехэшав1символ
создать
просмотр
ссылки

Простой потоковый шифр (сжатие хэша в 1 символ)


Идея в общем то интересная высказана
пользователем qubit в ветке форума-
https://www.pgpru.com/forum/kr.....termodeencryptionctr


Если любой хэш сжать хором в 1 символ, то очень затруднительно вообще понять, что там, в хэше было.
Соответственно для скорости использовать быстрый 4 байтные хэши типа-
http://amsoftware.narod.ru/algo.html


Как это сделал бы я:


Имеем текст «qwertyuiop» и пароль «passport»

Номер буквы в тексте N.

1Складываю 4 раза номер с паролем-
NNNN passport
2 Получаю хэш от «NNNN passport»- к примеру 235,32,47,121
3 Хорим 235^32^47^121=52
4 Само шифрование:

52^«q»

5 Берем следующую букву, увеличиваем N и все повторяем


а)Если у кого то возникнут мысли по поводу того, что можно все же как то узнать зависимость
суммы хэша от наших четырех NNNN
то можно просто ввести второй хэш работающий по другой схеме. Теперь будет 4 значения от первого хэша и 4 значения от второго хэша. И их (8 значений) хорить вместе.


б)Да, медленно. Но для своих программ пойдет.
И это быстрее, чем работать с любым современных хэшем типа SHA1-3, MD5.
Их крутость тут не нужна, т к все держится на трудности восстановления хэша из суммы его элементов.


 
Комментарии
— Morfeys (05/02/2018 01:01)   профиль/связь   <#>
комментариев: 19   документов: 3   редакций: 0
Собственно для своей реализации стал вопрос, как корректнее сделать четыре номера NNNN.
Если номер буквы шифрованного теста в int имеет 4 байта, NNNN должен для нормального хэша сильно отличатся при №=1 и №=2...
Выход нашел в инициализации этих NNNN хэшем от пароля
(что будет для каждого пароля различным)
и прокрутке этого счетчика NNNN по типу шифра "Энигма"- "колесами" с коэффециантом 2,3,7,11
— Morfeys (05/02/2018 01:03)   профиль/связь   <#>
комментариев: 19   документов: 3   редакций: 0
файл XH1.h
с++
— Morfeys (05/02/2018 01:09, исправлен 05/02/2018 01:10)   профиль/связь   <#>
комментариев: 19   документов: 3   редакций: 0

В своем проекте инклюдим в начале-
#include "XH1.h" //хэш в 1 символ (потоковый шифр)


ну а после что то типа описанного-



//пароль
unsigned char password77[10]={0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0x10};
//длинна пароля
int int_passw77=10;
// текст для шифрования
unsigned char text88[20]={0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0x10,
0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0x10};
// длинна текста
int int_text88=20;


//шифруем
hifr_XH (password77,int_passw77,
text88,int_text88);
//расшифров
hifr_XH (password77,int_passw77,
text88,int_text88);

— Morfeys (05/02/2018 01:23)   профиль/связь   <#>
комментариев: 19   документов: 3   редакций: 0
И да, это потоковый шифр, солите его пароли, господа!
Добавляйте каждый раз, если одинаковый пароль, соль как минимум 160 бит(20 байт)!!!
И если прямым перебором, то в 2100 вскроют, наверное...
— Morfeys (13/02/2018 03:22)   профиль/связь   <#>
комментариев: 19   документов: 3   редакций: 0
Более стойкий, но и более сложный по коду
(запарился писать :)
тут Шифр и крипто примитив Хэш160 c Tea128
это потоковый шифр hifr_TEA128
на основе крипто примитива-
Murmur160Tea128 v.02
(все на с++)
кроме того еще этот код может выдавать-
крипто хэш 160 бит
генератор псевдо случайных последовательностей
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3