Простой потоковый шифр (сжатие хэша в 1 символ)
Идея в общем то интересная высказана
пользователем qubit в ветке форума-
https://www.pgpru.com/forum/kr.....termodeencryptionctr
Если любой хэш сжать хором в 1 символ, то очень затруднительно вообще понять, что там, в хэше было.
Соответственно для скорости использовать быстрый 4 байтные хэши типа-
http://amsoftware.narod.ru/algo.html
Как это сделал бы я:
Имеем текст «qwertyuiop» и пароль «passport»
1Складываю 4 раза номер с паролем-
NNNN passport
2 Получаю хэш от «NNNN passport»- к примеру 235,32,47,121
3 Хорим 235^32^47^121=52
4 Само шифрование:
5 Берем следующую букву, увеличиваем N и все повторяем
а)Если у кого то возникнут мысли по поводу того, что можно все же как то узнать зависимость
суммы хэша от наших четырех NNNN
то можно просто ввести второй хэш работающий по другой схеме. Теперь будет 4 значения от первого хэша и 4 значения от второго хэша. И их (8 значений) хорить вместе.
б)Да, медленно. Но для своих программ пойдет.
И это быстрее, чем работать с любым современных хэшем типа SHA1-3, MD5.
Их крутость тут не нужна, т к все держится на трудности восстановления хэша из суммы его элементов.
комментариев: 20 документов: 3 редакций: 0
Если номер буквы шифрованного теста в int имеет 4 байта, NNNN должен для нормального хэша сильно отличатся при №=1 и №=2...
Выход нашел в инициализации этих NNNN хэшем от пароля
(что будет для каждого пароля различным)
и прокрутке этого счетчика NNNN по типу шифра "Энигма"- "колесами" с коэффециантом 2,3,7,11
комментариев: 20 документов: 3 редакций: 0
с++
комментариев: 20 документов: 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);
комментариев: 20 документов: 3 редакций: 0
Добавляйте каждый раз, если одинаковый пароль, соль как минимум 160 бит(20 байт)!!!
И если прямым перебором, то в 2100 вскроют, наверное...
комментариев: 20 документов: 3 редакций: 0
(запарился писать :)
тут Шифр и крипто примитив Хэш160 c Tea128
это потоковый шифр hifr_TEA128
на основе крипто примитива-
Murmur160Tea128 v.02
(все на с++)
кроме того еще этот код может выдавать-
крипто хэш 160 бит
генератор псевдо случайных последовательностей