Навеяло несколькими топиками на всяких форумах "суперспецов" (как в прочем и отсутствие тем для обсуждения на этом форуме, хочется знаете ли вернуться и пообщаться, а общаться собственно негде, что ни топик то скукота и никакого кода) Короче посмотрел я за последнее время наверное десятки разных самопальных велосипедов с квадратными колёсами, и решил не отставать от моды и возродить свой (возрадить потому что основной компонент, я применял ещё на спектруме в 90-е года) вышло примерно вот что... PHP: <?php function vladson_crypt1 ($str, $keys) { if (!is_array($keys)) return false; foreach ($keys as $key) if (!is_int($key)) return false; if (!is_string($str)) return false; $len = strlen($str); if (0 == $len) return false; for($i=0; $i<$len; $i++) { array_push($keys, (array_sum($keys)&255)*2); if (end($keys) > 255) array_push($keys, array_pop($keys)-255); array_shift($keys); $str[$i] = chr(ord($str[$i])^end($keys)); } return $str; } ?> Смысл работы прост как никогда, простая XOR-илка на основе генератора быдлослучайных чисел (быдлослучайных потому что под 100% словарное понятие "генератора случайных чисел" он не совсем попадает, но числа действительно разные, в принципе вместо этого можно было использовать простой srand, но я этого не сделал) Собственно используется примерно так: PHP: <?php $encoded = vladson_crypt1('Vladson', array(1, 2, 3)); $decoded = vladson_crypt1($encoded, array(1, 2, 3)); ?> Где array(1,2,3) это ключ. Чисел может быть как одно (но тогда период повторения у генератора будет мизерным) т.е array(1) так и несколько т.е array(х, х, х, итд) конечно после какого-то их количества всё упрётся во что нибудь. (Замечу упрётся, но работать не перестанет, если конечно чисел не будет столько что привысится допустимая память.) Я бы не рекомендовал использовать больше 5-ти, потому что даже при 4-х период будет исчисляться миллиардами, этого более чем достаточно. Собственно код может показаться "развратным", собственно это делалось специально, косвенной причиной написания была попытка продемонстрировать одному человеку что функции для работы с массивами в РНР очень даже разнообразны и полезны, и что не стоит читая мануал думать что "эта хрень мне не пригодится, знаю $array[] знаю unset, этого хватит" Критику конечно прочитаю с радостью, код конечно написан больше для смеха чем для использования, но он работает и не глючит, это факт! Так что если кроме критики будут ещё и наоборот добрые слова, мне будет приятно... P.S. - Я не вернулся, просто забежал скоротать пару вечерков...
Да ни чем, в данной конкретной реализации памяти меньше жрёт при больших объёмах, и выглядит круче ))) Просто последовательность случайных чисел берёт с более примитивного генератора.
фигово что строки после таких шифров никуда не годные получаются. Разве что система на юникоде и способна сохранить все эти иероглифы. Выдавала б она что-то типа того, что base64 возвращает. я вот хочу внедрить в систему где работаю (кстати она из Эстонии) выдачу демо-ключей. Получается даю ключ, он привязан к домену и до определенной даты работает. Естественно если не менять время на сервере)) Но ясен пень использовать вот такие функции там нельзя так как бытует мнение о их слабой устойчивости.
Сочувствую. 1 - Ломать продукты Ыстонской фирмы профи мирового класса не будут, по этому хватит совершенно любого способа. 2 - Если таки будут (допустим это будет действительно финансово ОЧЕНЬ выгодно) тогда никакие системы не помогут. 3 - Эта шифровалка генерирует гамму с помощью почти нигде не описанного алгоритма, потому что это не настоящий ГПСЧ а пародия (написанная для экономии тактов проца на компах которые были медленнее и тупее чем сейчас пульты от телевизора)
ну обкатаем метод у них, а потом может и я чего-то набыдлокодю и захочу продвать. Ну и ессно не хочется что б скрипт был поставлен на Over 9000 сайтов с варезом (превед DLE). и да, сейчас 440hz прибежит и скажет что нужно все далать свободным, тогда оно никому нафиг не нужно.