Начинаещ съм в програмирането, алгоритмите и криптографията. Натъкнах се на следния проблем, за който нямам решение, и не знам дали има въобще. Допускам, че може да е известна задача, решена вече, или пък нерешена. Ще съм благодарен за отговори, обяснения и линкове към обяснения и сорс-код.
Търся два криптиращи алгоритъма, които имат следните свойства.
Вход и на двата са два стринга, които са произволни, връщан резултат е стринг. Възможно е да има ограничение String1 да е с определена, предварително зададена дължина. Ако означим двата алгоритъма с Alg1 и Alg2, то за произволни два стринга String1 и String2 да имаме:
String3=Alg1(String1, String2);
String1=Alg2(String2, String3).
Горните две обработки да се извършват приемливо бързо, но да не съществува алгоритъм, по който криптоаналитик да може приемливо бързо да намери String1, разполагайки със String3, но без да знае String2.
И друг вариант на задачата (по-ограничителен). Също като горната задача, но с допълнителнито условие криптоаналитикът да е затруднен с намирането на String1, ако знае String2, но не знае String3.
Тези задачи са при условие, че криптоаналитикът знае и двата алгоритъма Alg1 и Alg2. Ако тези два алгоритъма ползват някакви допълнителни аргументи (като пароли), счита се, че те са известни на криптоаналитика.
Т.е. имаме двама криптоаналитици. Криптоаналитик 1 знае String3, но не знае String2. Криптоаналитик 2 знае String2, но не знае String3. И двамата знаят каква е дължината на String1, но не знаят самия String1 и се опитват да го намерят. При първа задача затруднен трябва да е само криптоаналитик 1, при втора задача затруднени трябва да са и двамата криптоаналитици.
Разбира се, ясно е, че изразът "приемливо бързо" е много условен и точни или приблизителни разчети могат да се дават само за конкретни алгоритми. Но все пак има ли алгоритми, които биха се вписали като решение на тези задачи, поне частично?

Меню