Можно ли расшифровать сообщение, зная только последние символы?
Есть исходное сообщение, которое мы шифруем каким-нибудь алгоритмом и получаем шифротекст. Вопрос - можно ли узнать секретные ключи и расшифровать зашифрованное сообщение, зная только его, публичные ключи и последние несколько символов исходного? Я понимаю, что большинство зависит от алгоритма шифрования. Но допустим, - что произойдет с RSA?
Данная атака возможна только на доморощеные не криптостойкие алгоритмы типо поделок на XOR-е) А RSA - сложнейший алгоритм 21 века, поэтому даже мысли о таком быть не может. https://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B8%D...
Хапхахвхахах, а ведь про XOR угадал))) С него я как-раз-таки и начинал создание приложения по шифрованию текста) Сам по себе он хреновый, каждый символ обрабатываем через XOR одним и тем же ключем и расшифровать его просто - только подобрать ключ, исходя из повторений цифр. Но я его улучшил так, что на каждый символ, ключ постоянно разный и выбирается случайно. Просто нужно знать сид рандома - это я и использую в качестве данных от пользователя, которые он должен запомнить. С простыми сидами это делается просто, но с длинными придется повозиться. Ну, я так считаю. Только еще надо проверить генератор случайных чисел на коллизии сидов.
P.S. Как шифруется сообщение вне зависимости от алгоритма шифрования? Просто каждый символ перебирается, или как?
0x0000002F, Что представляет собой ваш сид? Если он простой, то крякнется ваш шифр на раз-два) (Как и любой шифр, разработанный just-for-fun)
А по поводу вопроса не совсем понял - в смысле перебирается? Обычно весь файл (строка) разбивается на определенные блоки и с каждым независимо проводятся математические преобразования.
freemailroot, сид - это натуральное число для "идентификации" цепочки рандома. В своем новом вопросе я дал пример кода.
А по вопросу перебора: я из каждого символа по очереди достаю его 10-ичный код. Как например, A будет 65, B будет 66, С67 и т.д. - с каждым произвожу операцию и потом преобразую в 16-ричный формат. И так до конца строки. А как правильно делается?
Вот алгоритмы зашифровки и расшифровки по моему методу (на JavaScript):
/* Типа так:
let fun = c => c ^ 6;
let enc = toCode('Hello World!', fun);
let dec = fromCode(enc, fun);
console.log(enc);
console.log(dec);
*/
let radix = 16; // ONLY FOR DEBUG. DEFAULT: 16
function toCode(str, alg) {
let ns = '';
for (let i = 0; i < str.length; i++) {
ns += alg(+str.charCodeAt(i)).toString(radix);
if (i < str.length - 1) ns += ' ';
}
return ns;
}
function fromCode(str, alg) {
let ns = '';
let encArr = str.split(' ');
for (let i = 0; i < encArr.length; i++) {
ns += String.fromCharCode(alg(parseInt(encArr[i], radix)));
}
return ns;
}