Я недавно придумал шифр, основанный на простой замене при помощи функции вида D(x) = f(x) mod n на отрезке [a,b] с приращением h(Приращение, в данном случае, - изменение величины. Т.е. ключ каждый раз увеличивается на h, пока значение переменной входит в заданный интервал), где f(x) - случайная функция, дающая при любом x целые значения; Например: 25x^2+2x-2 или (x^x)mod n и т.д.; n - кол-во символов в алфавите. Помогите, пожалуйста, определить его надежность.
Псевдокод(для функции f(x)=x^3, n=17;a=0,b - стремится к бесконечности;h = 1):
Input len;//Шифрование
n = 17;
for i = 0 to len{
Input message;
NewMessage = ((message*message)+h)mod(n);
h++;
Output NewMessage;
}
//Дешифрование
For c =0 to len{
message = (sqrt(NewMessage)-h)mod(n);
h++;
Output message;
}
Ivan Bogachev, Приращение, в данном случае, - изменение величины. Т.е. ключ каждый раз увеличивается на h, пока значение переменной входит в заданный интервал
Nikita Ry, Вы можете подробно по шагам описать, что есть ключ, что есть открытый текст и как происходят операции для шифровки/расшифровки? Сейчас вопрос выглядит слегка сумбурно и такое впечатление складывается, что ваш алгоритм в обратную сторону не работает (не будет однозначной расшифровки).
Ivan Bogachev, На входе мы получаем открытый текст, интервал, функцию и интервал. Каждый объект(символ или как хотите) шифруется при помощи функции(например, (x^2)mod n) на данном отрезке. Следующий объект та же самая функция на к x добавляется h. Т.е. если функция дает при любых числах на входе, то на выходе мы получаем целое число. Вроде в таком случае не должно возникнуть двусмысленности.
Юрий, В Караганду такой алгоритм, который нужно скрывать. Нормальные шифры строятся на математике так, что их публикуют, описывают в подробностях - чтобы уязвимости нашли. Security through obscurity - крайне плохая примета в криптографии.
Никогда не придумывайте ничего из области криптографии, пока у вас не будет хотя бы докторской степени по математике. В качестве разминки для ума - можно, но боже вас упаси нести эту отсебятину в коммерческие продукты.
По той же причине, что я озвучил выше, никто здесь, скорее всего, не сможет провести анализ вашего алгоритма на криптографическую стойкость.
Не знаю, может быть, ваш алгоритм гениален и никто за всю историю компьютерной криптографии до него не додумался, не смотря на то, что над изобретением шифров трудились лучшие математики планеты, но я сильно в этом сомневаюсь.
Надежность такая-же как и у любого другого такого-же шифра. Данные можно зашифровать и расшифровать обратным алгоритмом. Как бы ты не прятал это в коде, можно будет найти.