как оно может совпасть с ответом если я его(ответ) не знаю. но видимо ты имел в виду пока не попадётся комбинация а - tryevcgdha но это ничего мне не даст так как слово состоит не только из двух букв, ну почти ни чего не даст- даст массив вероятных результатов
Я не знаю что такое нативный ответ. --- Добавлено --- Я объясняю принцип работы. Для наглядности создай функцию закодируй каждую букву 10ю символами когда будешь отправлять через масив ПОСТ при получении ответа отправь получившийся ответ опять через ПОСТ до тех пор пока ответ не получишь
@Ruslanpro ну принцип понятен был, объясню невозможность дешифровки допустим на выходе ты получил baXXXXb под X могут быть любые буквы которые не определить в виду отсутствия инфы. ты бы добавил рандома, разворота строк если нравится придумывать свои алгоритмы но это не рационально, пригодно пожалуй для личного использования для широкого использования смотри в сторону gnupg или chipher или openssl
Я объясняю принцип работы. Для наглядности создай функцию закодируй каждую букву 10ю символами когда будешь отправлять через масив ПОСТ при получении ответа отправь получившийся ответ опять через ПОСТ до тех пор пока ответ не получишь Согласен есть свои ньюансы, при кодировке увеличивается в геометрическом порядке
@Ruslanpro только вот твои вложения не имеют смысла так как это всё можно расшифровать всеголишь одним репласом так как начальная буква в итоге будет иметь одну и ту же последовательность те в примере мы шифровали abca после двух итераций результат acbbbbcaaaacacbb и вместо того чтобы производить обратную дешифровку с двумя повторами можно просто приравнять a = acbb это тот случай когда овчинка выделки не стоит
Новоечестно сказать не понял твой пример с abc. Закодируем к примеру как a = qwer b = asdf c = poiu слово = abc закодировано как = qwerasfpoiu При дешифровке Ответ = aasfc ( не верный ответ ) Это говорит о том что букву нужно шифровать большим количества символов. В моем случае БУКВА = 10 символам. Может быть количество символов можно уменьшить до 8 или 7 метедом эксперемента.
Это если одна итерация проделана над шифром. Шифр в первом посте, явно пропускался несколько раз. Конечно, я могу и ошибаться. Имено при пропуске повторно, начинается настоящее веселье.
@Ruslanpro ты не понял объясню ещё раз есть строка abca первая итерация aa bb cc aa вторая итерация azaz bzbz czcz azaz проводи ты хоть стопиццот итераций на выходе одна и таже комбинация будет означать одну и туже букву, количество вставляемых букв только удлинит выходной текст но не сложность дешифровки в примере azaz всегда будет равно а
Это говорит о том, что не надо выдумывать велосипед. Вот так в реальном мире люди симметрично шифруют данные: PHP: $text = 'У попа была собака, он ее любил!'; $key = '16or24or32signedpassword'; //16, 24 ли 32 битный пароль $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('AES-128-CBC')); //инициализирующий вектор $ciphertext = openssl_encrypt($text, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv); // настоящая криптография echo '{"iv":"' . base64_encode($iv) . '","ciphertext":"' . base64_encode($ciphertext) . '"}';//сериализованный объект, содержащий в себе строковые представления инициализирующего вектора и получившегося шифра. Потому что на самом деле, после шифрования мы получаем бинарную кашу, которую нельзя просто взять и передать в чистом виде. Полученный объект мы можем передавать тому, у кого есть заранее подготовленный ключ. Без ключа его не вскрыть. Кроме того, полученный шифр может быть расшифрован на чем угодно, что поддерживает, в данном случае, AES-128-CBC алгоритм шифрования. В любом другом языке. Хоть на клиенте в яваскрипте. Главное, чтобы ключ был на руках. Обрати внимание, что ключ не имеет привязки к используемому алфавиту. Я могу зашифровать любые данные. Кириллицу, латиницу, цифры, служебные символы, ASCII-графику, картинку в BASE64-представлении, что угодно. ВООБЩЕ ЧТО УГОДНО. 32-символьным ключом. И ты никогда не вскроешь этот шифр, не имея на руках ключ. А на подбор хорошего, крепкого ключа брутфорсом у тебя жизни не хватит. В твоем же случае длина ключа прямо пропорциональна длине используемого алфавита. И десятикратно его превышает. При этом, достаточно перехватывать сообщения, зашифрованные твоим методом, в течение некоторого времени, чтобы потом, получив словарную базу, вскрыть его частотным подбором в краткие сроки. Ловить шифры, сгенерированные приведенным мною кодом, можно до посинения. В них не заложено никакой информации, которую можно накапливать и использовать. Ах да, расшифровка: PHP: $cipher_object = json_decode('{"iv":"GlJE4CUP2nj/T6czKSOxMw==","ciphertext":"3Hl4sVhqEonJ77kT28I2IEYzEhl+2QSZU8ZmDN0vN+a54BWTA3IbiLSHNszZqbVufjWCoVHbkPvYyUTg+tvGMQ=="}',true); //Десериализуем наш шифрообъект $key = '16or24or32signedpassword'; //Наш заранее известный пароль $iv = base64_decode($cipher_object['iv']); //Вытаскиваем и конвертируем в бинарный вид наш иниц.вектор $cipher = base64_decode($cipher_object['ciphertext']); //Делаем то же самое с шифром $plain_text = openssl_decrypt($cipher,'AES-128-CBC',$key,true,$iv); //Расшифровываем echo $plain_text; // получаем текст: 'У попа была собака, он ее любил!';
И сравни длину шифра, который получился после шифрования целого предложения с длиной шифра, который у тебя получился после шифрования одного слова. --- Добавлено --- Имхо, прежде чем изобретать велосипедное шифрование, было бы неплохо почитать про криптографию. --- Добавлено --- Даже упростит, если заранее знать алгоритм. Потому что тогда у нас есть...по сути целый текст. Это как архивирование архивов. Многие поначалу думают, что если сжать сжатый архив, то он сожмется еще сильнее. Просто потому, что не понимают, как оно работает. А на деле повторно сжатый архив может получиться больше, чем сжатый однократно.
@abrdabr, мне кажется ты не понял как он все зашифровал. Одним реплесом не обойтись, нужно ровно столько реплесов, сколько было при шифровании. --- Добавлено --- PHP: $test = str_replace(array( "a", "b", ), array( "tryevcgdha", "qoyrtvcbzh", ), $test); Например кодирование ab: 1-ая итерация - tryevcgdhaqoyrtvcbzh 2-ая итерация - tryevcgdhtryevcgdhaqoyrtvcqoyrtvcbzhzh А теперь представь в массивах все буквы были, т.е. 27. Каждый сивол в строке реплеснулся бы соответствующим паттерном. Так что никакие azaza и один реплес не катят.
@mahmuzar ну ты используешь дополнительные символы, но алфавит конечен, ну ок юникод конечен, на крайняк можно всё перевести в бинарные данные. а в твоём примере 2 итерация выглядит с точки зрения дешифровки так tnullnullnullnullnullnullnullnullnullrnull -> (yevcgdhtryevcgdhaqoyrtvcqoyrtvcbzhzh) те а=tryevcgdhtryevcgdhaqoyrtvcq будь в шифруемом тексте ещё одна а она тоже была бы равна этой комбинации PHP: $test = str_replace(array( "tryevcgdhtryevcgdhaqoyrtvcq", "oyrtvcbzhzh", ), array( "а", "б", ), $test);
Ды понятно, что у тебя есть набор на замену, есть алфавит, ты прогнал слово через набор на замену, потом, полученный текст прогнал еще раз. И еще раз. Потенциально, к слову, сломав все, потому что есть вероятность образования сочетаний, которые на обратном преобразовании войдут во множество подмен, хотя не должны. --- Добавлено --- Ну и подмены таки не везде 10-символьные.
Я прогнал слово через str_replace один раз и получил то что вы видите, а через раскодировку прогоняю несколько раз до получения ответа
То есть, кодирующий и декодирующий наборы, по факту, разные? Асимметричный алгоритм? Это уже интересно. И наборы кодирующих множеств генерятся тоже по какому-то алгоритму, раз так, а не просто руками набиваются?
Нет, одно и тоже . Код и декод прогоняю через str_replace. Там два str_replace 1 кодирует 2 декодирует
Я понял, в чем соль. Когда первый символ алфавита реплейса бежит по тексту, он отрабатывает нормально. Второй обрабатывает оставшийся текст, плюс то, что наработал первый, потому как идет по строке слева направа, и так далее. Потом, чтобы размотать обратно, тебе нужно сделать количество обратных реплейсов, равное количеству символов в строке. Ох жесть, страшно представить, сколько оно будет работать, и какой объем данных выдаст, если зашифровать..да хоть этот мой пост. Там же рост идет не в геометрической прогрессии нифига. Там что-то типа экспоненты. Ну а еще оно небезопасно. Чем длиннее текст, тем выше вероятность получения необратимой порчи данных.