|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.03.2015, 19:23 | #1 |
Регистрация: 28.03.2015
Сообщений: 4
|
Проблема со пецсимволами при шифровании
Всем привет!
У меня есть задача - реализовать в Excel алгоритмы кодирования текста и его расшифровки. Т.к. у меня в этом вопросе ограничений не было, я решил выполнить эту задачу следующим образом: 1. Составить алфавит символов 2. Назначить каждому сиволу псевдослучайное число 3. Отсортировать таблицу по случ.числам (перемешать алфавит) 4. Составить таблицы из исходного алфавита и перемешанного (получим ключ шифрования) 5. Затем я написал в виде функций (пришлось столкнуться с VBA) алгоритмы кодирования и декодирования строк на основе полученного ключа. Но я выявил две проблемы: 1. Цифры и некоторые спец.символы не обрабатываются в принципе - это скорее всего связано с тем, что в VBA необходимо как-то обрабатывать спец. символы и цифры. 2. Часть спец.символов при декодировании не показывают первоначальный текст. Я думаю, что причина тоже кроется в необходимости "обвертки" этих спец.символов для дальнейшей работы с ними. Файл с моим результатом во вложении. Хелп, у кого есть опыт в обработке спец.символов или если есть кое-какие соображения на этот счет.... |
28.03.2015, 19:46 | #2 |
Старожил
Регистрация: 31.12.2010
Сообщений: 2,133
|
Для ВПР спец. символами являются * ? ~ . Прочитайте справку по функции. Вам "повезло" с тильдой .
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
|
28.03.2015, 19:57 | #3 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Я сделал рабочую версию, заменив ВПР() на поиск в словаре, ну и на листе продублировал апостроф.
Но потерял файл...
webmoney: E265281470651 Z422237915069 R418926282008
|
28.03.2015, 20:13 | #4 |
Старожил
Регистрация: 31.12.2010
Сообщений: 2,133
|
Чтобы "допилить" существующие функции, надо перед Vlookup проверить, является ли символ для поиска одним из специальных, и если да, то добавить тильду:
Код:
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
|
29.03.2015, 15:19 | #5 |
Регистрация: 28.03.2015
Сообщений: 4
|
Задача решена!
Казанский, спасибо за пояснения - задача решена!
Я никогда не работал с VBA и благодаря вашим пояснениям все получилось. Совет по спец.символам пришелся как нельзя кстати! И более того, ваши две строчки кода натолкнули меня на мысль, которая поборола проблему с цифрами. Теперь все работает, по крайней мере исходя из результатов выборочного тестирования. Если интереснен результат, файлик во вложении!)) И еще + инфа по пересчету функций. Вычитал, что Vlookup (и другие функции) может давать сбой в автоматическом пересчете (особенно когда есть больше одной ссылки на другие ячейки), поэтому в MS придумали функции, по следующим горячим клавишам, чтобы исправить подобные глюки: F9 Пересчитывает измененные после последнего вычисления формулы и формулы, зависящие от них, во всех открытых книгах. Если установлен автоматический пересчет книги, нажимать клавишу F9 для пересчета не требуется. SHIFT+F9 Пересчитывает измененные после последнего вычисления формулы и формулы, зависящие от них, в активном листе. CTRL+ALT+F9 Пересчитывает все формулы во всех открытых книгах, независимо от того, были они изменены в прошлый раз или нет. CTRL+SHIFT+ALT+F9 Проверяет зависимые формулы, а затем пересчитывает все формулы во всех открытых книгах, независимо от того, были они изменены в прошлый раз или нет Последний раз редактировалось freeaccess1; 29.03.2015 в 16:30. |
29.03.2015, 16:49 | #6 |
Регистрация: 28.03.2015
Сообщений: 4
|
Докручиваем в сторону идеальности....
Наверное, это будет дурным тоном - начинать другую тему в текущей - но новая тема тесно связана с решением предыдущей задачи.
Были написаны два алгоритма: один - кодировщик, второй - дешифровщик. Но если посмотреть на них внимательно, то увидим, что алгоритмы абсолютно одинаковы! Выходит, что нам в идеале не нужны оба алгоритма - достаточно всего лишь одного. Единственное, что необходимо решить, это как грамотно передать на вход в нашу функцию диапазон значений (особенной из нетекущих листов) как параметр. Может, кто в курсе, где можно почитать об этом? Последний раз редактировалось freeaccess1; 29.03.2015 в 16:54. |
29.03.2015, 17:15 | #7 |
Регистрация: 28.03.2015
Сообщений: 4
|
Как оказалось, ничего сложного:
Код:
Последний раз редактировалось freeaccess1; 29.03.2015 в 17:32. |
29.03.2015, 18:17 | #8 | |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
Цитата:
Код:
для шифрования. для шифрования вызываете Codec с диапазоном стандартных символов, для обратной процедуры - с шифрованными символами и третим параметром True удачи! "идеальный код, не тот в который нечего добавить, а тот, из которого нечего убрать..."
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
|
29.03.2015, 20:40 | #9 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
и строго, разбирая название темы,
на самом деле ни какой проблемы с шифорованием спецсимволов нет, шифруются как и все остальные и ничем от них не отличаются а вот с поиском спецсимволов в тексте или списке есть проблема, и то - только до того времени, пока ничего не знать о их существовании. но когда уже в теме заявлено, опуская опечатку, о "спецсимволах" то какие вообще могли быть проблемы? в справке ексель это описано и на этом акцентировано внимание. читайте справку, все можно раскопать, достаточно немного настойчивости, а если читать вслух, то еще научитесь произносить много английских слов или посмешите окружающих, как это делаю я
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
математические алгоритмы при шифровании | Mimono | Помощь студентам | 0 | 01.04.2014 11:36 |
Потеря регистра букв при шифровании в base64 | Dominatorsha | Общие вопросы .NET | 1 | 03.02.2014 17:39 |
Кодировка при шифровании | PwnOwned | C# (си шарп) | 0 | 24.06.2013 17:57 |
Проблема с записью и чтением из файла при шифровании | dolphin705 | Общие вопросы Delphi | 8 | 25.10.2011 16:13 |
Ошибка при шифровании | disaer | Общие вопросы C/C++ | 3 | 29.09.2010 10:32 |