Просмотр полной версии : Помогите с шифрованием
Bubblegum
20.12.2005, 21:19
Привет всем Подскажите ак можно запрограмировать вот это
Шифратор Виженера в своей сути использует развитие идеи Цезаря. Отличается только тем, что число реальных таблиц подстановки зависит от длины используемого ключа. Этот шифр много алфавитной подстановки можно описать таблицей шифрования называемой таблицей (квадратом) Виженера. Ниже приведен пример таблицы Виженера.
В таблице (http://r13s.narod.ru/Excel.rar) Вижинера каждая строка представляет собой циклически сдвинутую на один символ предыдущую строку таблицы таким образом что каждая строка по своей сути является таблицей подстановки шифратора Цезаря для конкретного значения ключа.
Таблица Вижинера используется для шифрования и дешифрирования.
Верхняя строка таблицы Вижинера используется для задания символов исходных текстов, а левый столбец для задания символов криптографического ключа.
При шифровании исходного сообщения его записывают в строку, а под ним ключевое слово либо фразу. Если ключ оказался короче исходного текста, то его циклически повторяют необходимое число раз. На каждом шаге шифрования в верхней строке таблицы Вижинера находят очередную букву исходного текста, а в левом столбце очередное значение символа ключа. В результате очередная буква шифротекста находится на пересечении столбца определенного символом исходного текста и строки соответствующей строке символа ключа.
При шифровании слова М=”КРИПТОГРАФИЯ” по методу Вижинера для ключа k=“ШИФР” предварительно исходный текст и ключевое слова запишем в виде двух строк.
К Р И П Т O Г Р А Ф И Я
Ш И Ф Р Ш И Ф Р Ш И Ф Р
Тогда первая буква исходного текста ‘К’ определяет десятый столбец таблицы Вижинера а буква ‘Ш’ ключа 24-ую строку таблицы на пересечении которых находится символ шифротекста ‘В’. Окончательный результат шифрования имеет вид EK(M)=”ВЩЭЯЛЧШАЩЭЭР”.
Текст должен читаться из файла
Спасибо
просто используй не таблицу а код ascii. и совместимоть будет больше.
делаешь сдвиг и простенькую проверку что если булеь 255 то отнять 255.
Все буквы - в коды ascii, как совершенно правильно заметил ffffff.
Делаешь массив A из таблицы (ручками). Или подгружаешь его из файла - это уж как удобнее.
Столбец (i) = код буквы.
Строка (j) = код буквы шифра. Номер буквы шифра есть остаток от деления позиции шифруемого символа на длину ключа (при нумеровании от 0).
Соответственно символ шифротекста = A[i][j]
Bubblegum
21.12.2005, 20:42
Товарищи Флэшеры помогите мне, а то с программированием я совсем чайник, знаю про скрипты не много (учусь пока) я знаю флэшь хорошо только со стороны холста, а с програмной частью у меня напряг
md5 -- и жизнь продолжается.
Bubblegum
21.12.2005, 21:09
Вот что замутил (http://r13s.narod.ru/shifr.rar),
Подскажите что далее
Bubblegum
21.12.2005, 23:32
Подсажите как задать двумерный массив вещественныйх чисел
var multiDimensionalArray:Array = [[1, 2, 3], [4, 5, 6], [7, 8, 9, 0]];
Bubblegum
22.12.2005, 01:12
Весь день бьюсь с этим, уже 5 утра
вот че надумал
http://r13s.narod.ru/s.rar
подскажите новичку что дальше...
Вах! Чудеса какие-то!!!!
var str="абвгдежзийклмнопрстуфхцчшщъыьэюя";
var data:Array=[];
var sl=str.length;
trace(str+'\t'+str.length);
init();
function init(){
var tmp:Array=str.split('');
trace("1 трейс массива");
for(var i=0;i<sl;i++){
var a=tmp.shift();
tmp.push(a);
data.push(tmp);
trace(i+'\t'+data[i]);
}
trace("А вот 2 трейс готового массива!");
for(i=0;i<sl;i++){
trace(i+'\t'+data[i]);
}
}
Второй трейс кажет, что массив забит НЕМОДИФИЦИРОВАННЫМИ данными!???!
Это как это???
Bubblegum
23.12.2005, 15:14
Неужели ни кто не знает как запрограммировать этот метод?
(Я знаю? что все знают, просто ни кто не хочет мне помочь.)
А вы знаете, что программ подобных этой в сети не так много. Сколько я смотрел в Интернете исходников не нашел.
Вах! Чудеса какие-то!!!!
.............................................
Второй трейс кажет, что массив забит НЕМОДИФИЦИРОВАННЫМИ данными!???!
Это как это???
Если ты потрейсишь в цикле массив "data", то увидишь, что Флэш каждую итерацию цикла заполняет этот массив (все элементы) содержимым массива "tmp", какое оно есть на момент итерации.
Почему это происходит? Похоже на то, как будто в массиве "data" хранятся ссылки на массив "tmp", а не значения...
Кто знает точно, подтвердите мысль.
Поэтому твой код можно переписать так:
var str="абвгдежзийклмнопрстуфхцчшщъыьэюя";
var data:Array=[];
var sl=str.length;
trace(str+'\t'+str.length);
init();
function init(){
var tmp:Array=str.split('');
trace("1 трейс массива");
for(var i=0;i<sl;i++){
var a=tmp.shift();
tmp.push(a);
data.push(tmp.join('').split(''));
trace(i+'\t'+data[i]);
}
trace("А вот 2 трейс готового массива!");
for(i=0;i<sl;i++){
trace(i+'\t'+data[i]);
}
}
2 nyctota Спасибо, попытаю, только странно это как-то и не совсем понятно?
2 МОНСТЕР:
Ну, почему непонятно. Во многих (или всех серьезных? =/) языках программирования есть передача ссылки на объект. Ждем-с подтверждения от знающих людей о наличие такой возможности во Флэше (хотя, по-моему, это только что было доказано нами :D)
2 Bubblegum:
Тебе по идее все карты в руки даны -- дерзай!
Тестируем этот скрипт.
var str = "абвгд";
var data:Array = [];
var sl = str.length;
trace(str+'\t'+str.length);
init();
function init() {
var tmp:Array = str.split('');
trace("1 трейс массива");
for (var i = 0; i<sl; i++) {
var a = tmp.shift();
tmp.push(a);
data.push(tmp+"!");
trace(data[i]);
}
trace("А вот 2 трейс готового массива!");
for (i=0; i<sl; i++) {
trace(i+'\t'+data[i]);
}
}
вот и ответ на ваш вопрос ;)
var str = "абвгд";
var data:Array = [];
var sl = str.length;
trace(str+'\t'+str.length);
init();
function init() {
var tmp:Array = str.split('');
trace("1 трейс массива");
for (var i = 0; i<sl; i++) {
var a = tmp.shift();
tmp.push(a);
trace(tmp);
//следующая строка заполняет каждый элемент массива data содержимым tmp это будет видно в трейсе
data.push(tmp);
trace(data);
}
}
Кажется ошибка работы массивов...0_0
хм...Я так понимаю массив TMP после shift и push - приобретает некоторый вид...
И если он затем закладывается в другой массив...ээ...глюки начинаются =) весь массив таинственным образом перезаписывается...
ИТОГ расследований ;)
arr = [];
str = [1, 2, 3];
arr.push(str);
trace(arr); //выводит 1,2,3
str.reverse();
trace(arr); //выводит 3,2,1
Похоже на то, как будто в массиве "data" хранятся ссылки на массив "tmp", а не значения...
Мысль здравая, но такой прием работает только, если с массивом проводится определенная операция(push,reverse,shift...etc).
arr = [];
str = [1, 2, 3];
arr.push(str);
trace(arr); //выводит 1,2,3
str= [6,6,6]
trace(arr); //выводит 1,2,3
//
nyctota, Ieshua: Благодарю друзья! После столь развернутого объяснения и примеров, все стало предельно ясно! :)
nyctota, Ieshua: Благодарю друзья! После столь развернутого объяснения и примеров, все стало предельно ясно! :)
Тестируем этот скрипт.
var str = "абвгд";
var data:Array = [];
var sl = str.length;
trace(str+'\t'+str.length);
init();
function init() {
var tmp:Array = str.split('');
trace("1 трейс массива");
for (var i = 0; i<sl; i++) {
var a = tmp.shift();
tmp.push(a);
data.push(tmp+"!");
trace(data[i]);
}
trace("А вот 2 трейс готового массива!");
for (i=0; i<sl; i++) {
trace(i+'\t'+data[i]);
}
}
вот и ответ на ваш вопрос ;)
Ну, это не совсем ответ. Это скорее проверка того, как Флэш меняет типы переменных в зависимости от контекста.
В твоем примере красным выделена строка, которая "виновна" в том, что выражение в скобках становится строковым. Можно написать вместо этого
data.push(tmp+"!");
Получится даже проще, чем предложил я.
Кто нибудь в итоге понял, с чем мы столкнулись и как это классифицировать?
Не понимаю, в чем суть проблемы. Посмотрел. Все работает, как и должно.
P.S. Очень прошу товарища Х больше не писать мне писем с вопросами. Для этого есть форум.
.
.
.
data.push(tmp+"!");
Получится даже проще, чем предложил я.
Вы не правы. :) Ваша поправка заполняет массив - массивами. Т.е. генерируется двумерный массив, как и было задумано.
В примере Ieshua получается одномерный массив, заполненный строками. :) Но его "ИТОГ расследований" вроде достойно ответил на вопрос про ссылки!
Товарищ Х искренно просит прощения :D
Вы не правы. :) Ваша поправка заполняет массив - массивами. Т.е. генерируется двумерный массив, как и было задумано.
В примере Ieshua получается одномерный массив, заполненный строками. :) Но его "ИТОГ расследований" вроде достойно ответил на вопрос про ссылки!
Да запарился я)) Скопировал его строку, но не исправил. Хотел написать
data.push(tmp+"");
Хотя это мало что меняет. Массив не будет двухмерным.
И, действительно, походу передача ссылки происходит только при совершении определенных операций.
Расследование можно считать завершенным, топик закрытым %)
Если, конечно, г-н Антарес не выскажет своего мнения, когда вникнет в суть нашего вопроса. Мнение будет интересно (мне по-крайней мере).
to Antares:
Внимание на пост МОНСТЕРа, который начинается со слов
Вах! Чудеса какие-то!!!!
Код, следующий далее, работает не совсем так, как ожидалось им, мной (и, думаю, не только нами). К тому же я не встречал упоминания о ссылках на объекты во Флэш (кажется). Поэтому ваше "Посмотрел. Все работает, как и должно." впечатлило. :D
Может поделитесь информацией?
Товарисч Х тоже попросил посмотреть, но получил жесткый подзатыльник в ответ, видимо:
Все работает, как и должно.(С)
sergwizard
27.12.2005, 02:36
А вот такой вариант не подойдет?
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.