Ребят, привет😊 Всегда хотел написать что нибудь связанное с шифрованием, не слишком сложное, но достаточное что бы потешить свое самолюбие😊
Самым простым я посчитал алгоритм многоалфавитной подстановки, смысл в том что каждый символ заменяется своим кодом в зависимости от таблицы, для расшифровки нужна собственно оригинальная таблица и ключ. Алгоритм уязвим для длинных текстов, об этом вы можете почитать в википедии =))
Класс для работы:
Можно создать свою уникальную таблицу и сгенерировать уникальный ключ. Генерация ключа каждый раз происходит рандомно =)
файл класса можно скачать из моего профиля
Это конечно не формат инстанта, просто хотел поделиться.
Самым простым я посчитал алгоритм многоалфавитной подстановки, смысл в том что каждый символ заменяется своим кодом в зависимости от таблицы, для расшифровки нужна собственно оригинальная таблица и ключ. Алгоритм уязвим для длинных текстов, об этом вы можете почитать в википедии =))
Класс для работы:
private static $instance; public $chars = '|abcdefghigklmnopqrstuvwxyz0123456789.ABCDEFGHIGKLMNOPQRSTUVWXYZ '; public $separator = '_'; public $code_chars = 8; public static function getInstance(){ if (self::$instance === null) { self::$instance = new self; } return self::$instance; } public function __construct(){ return true; } // создание короткой строки символов public function createChars($data){ foreach($ar_chars as $char){ $ar_chars_temp[$char] = $char; } return $this->chars; } // Создание ключа для шифрования public function getKey(){ // последовательность симвовлов $chars = $this->chars; //колличество символов в коде $code_chars = $this->code_chars; // разделитель $separator = $this->separator; // массив ключа шифра $n = 0; // гененирруем код $x = $this->getCode($chars, $code_chars); // проверяем на совпадение в том числе и с сепаратором $x = $this->getCode($chars, $code_chars); echo $x . '<hr />'; } // добавляем в массив $ar_key[$n] = $x; $n = $n + 1; } } // функция генерации кода для символа private function getCode($chars, $code_chars){ $n = 0; $x = ''; while($n < $code_chars){ $n = $n + 1; } return $x; } public function encode($data, $key){ // строка символов $chars = $this->chars; // разделитель $separator = $this->separator; // получаем массив ключа // массив символов // массив ключа для шифровки //собираем массив foreach ($ar_chars as $key=>$value){ $ar_key_sum[$value] = $ar_key[$key]; } // разбиваем строку на символы // шифрованный массив foreach($ar_data_chars as $char){ $ar_code[] = $ar_key_sum[$char]; } // собираем в строку // кодируем и выводим } public function decode($data, $key){ // строка символов $chars = $this->chars; // разделитель $separator = $this->separator; // получаем массив ключа // массив символов // получаем массив зашифрованной строки // собираем масив для расшифровки foreach($ar_key as $k => $v){ $decode_key[$v] = $ar_chars[$k]; } // собираем декодированную строку $data = ''; foreach($ar_data as $value){ $data = $data . $decode_key[$value]; } return $data; } }
файл класса можно скачать из моего профиля
Это конечно не формат инстанта, просто хотел поделиться.