Статьи

Разработка приложения для шифрования с использованием Flash и MDM Zinc

Шифрование — это процесс преобразования информации с использованием алгоритма, который делает ее нечитаемой для всех, кроме тех, кто обладает специальными знаниями, обычно называемыми ключом.

Используя Multidmedia Zinc, мы создадим приложение для шифрования в ActionScript 3, способное шифровать текст и файлы с помощью указанного пользователем ключа.




Используя класс mdm.Encryption и его методы, мы будем использовать простой интерфейс для получения файла, текста и ключа для шифрования.

Откройте Flash и создайте новый файл Flash (ActionScript 3).

Установите размер сцены на 500×300 пикселей.

Простой интерфейс будет очень хорошо работать в этом приложении, поэтому я не буду подробно его создавать.

На начальном экране присутствуют четыре кнопки, текстовое поле и значок для отображения его функции. В нижней части сцены есть еще одно Texfield, которое будет отображать сообщение, когда шифрование / дешифрование завершено. Вы можете увидеть имена экземпляров на изображении.

Это второй вид, используемый в фильме. Это мувиклип с именем «TextView», который будет вызываться из ActionScript (не забудьте установить флажок), большой TextField с именем «encryptText» и другой с именем «encryptKey». В разделах Зашифрованный файл поле «encryptText» ДОЛЖНО иметь полный путь, вы не можете реализовать метод просмотра, чтобы получить полный путь из соображений безопасности.

Есть также две кнопки «encryptionButton» и кнопка, которая будет вызываться с помощью ActionScript для возврата на начальный экран. Она называется «BackButton», не забывая проверять «Экспорт для ActionScript» при преобразовании в MovieClip.

Как видите, интерфейс очень прост. Помните, что если у вас есть сомнения по поводу имен экземпляров, вы можете проверить источник.

Мы будем использовать один класс в этом приложении.

Создайте новый файл ActionScript и сохраните его как «Main.as».

Давайте сначала импортируем нужные нам классы.

1
2
3
4
5
6
7
8
9
package
{
 
    import mdm.*;
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import fl.transitions.Tween;
    import fl.transitions.easing.Strong;
    import fl.transitions.TweenEvent;

Ключевое слово extends определяет класс, который является подклассом другого класса. Подкласс наследует все методы, свойства и функции, так что мы можем использовать их в нашем классе.

1
2
public class Main extends Sprite
{

Это переменные, которые мы будем использовать, объяснено в комментариях.

1
2
3
var tween:Tween;
var textView:TextView;
var back:BackButton;

Мы собираемся использовать специальные методы и свойства MovieClip, поэтому мы расширяем их с помощью класса MovieClip. Расширение с использованием класса Sprite не будет работать.

1
2
public class Main extends MovieClip
{

Это основная функция.

1
2
3
4
public function Main():void
{
    mdm.Application.init(this, onInit);//Initialises {mdm}Script™.
}

Эта функция выполняется при запуске скрипта mdm. Он просто вызывает функцию для добавления некоторых слушателей кнопки.

1
2
3
4
private function onInit():void
{
    addButtonListeners();//Adds the listeners to the main four buttons
}

Это функция, которая добавляет слушателей.

1
2
3
4
5
6
7
private function addButtonListeners():void
{
    efButton.addEventListener(MouseEvent.MOUSE_UP, encryptFileHandler);//Encrypt File listener
    etButton.addEventListener(MouseEvent.MOUSE_UP, encryptTextHandler);/Encrypt Text listener
    dfButton.addEventListener(MouseEvent.MOUSE_UP, decryptFileHandler);//Decrypt File listener
    dtButton.addEventListener(MouseEvent.MOUSE_UP, decryptTextHandler);//Decrypt Text listener
}

Слушатели будут удалены при нажатии одной из кнопок.

1
2
3
4
5
6
7
private function removeButtonListeners():void
{
    efButton.removeEventListener(MouseEvent.MOUSE_UP, encryptFileHandler);
    etButton.removeEventListener(MouseEvent.MOUSE_UP, encryptTextHandler);
    dfButton.removeEventListener(MouseEvent.MOUSE_UP, decryptFileHandler);
    dtButton.removeEventListener(MouseEvent.MOUSE_UP, decryptTextHandler);
}

Анимация переместит кнопки со сцены, чтобы скрыть их.

1
2
3
4
5
6
7
8
9
private function animateButtons():void
{
    /* Moves the buttons to the right */
 
    tween = new Tween(efButton,»x»,Strong.easeOut,efButton.x,stage.stageWidth + efButton.width,1,true);
    tween = new Tween(etButton,»x»,Strong.easeOut,etButton.x,stage.stageWidth + etButton.width,1,true);
    tween = new Tween(dfButton,»x»,Strong.easeOut,dfButton.x,stage.stageWidth + dfButton.width,1,true);
    tween = new Tween(dtButton,»x»,Strong.easeOut,dtButton.x,stage.stageWidth + dtButton.width,1,true);
}

Эти функции вызывают шифрование / дешифрование файла в зависимости от нажатой кнопки.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
private function encryptFileHandler(e:MouseEvent):void
{
    showTextView();//Shows the «TextView»
 
    textView.encryptionButton.addEventListener(MouseEvent.MOUSE_UP, encryptFile);//Adds the listener to the Encryption Button
}
 
private function decryptFileHandler(e:MouseEvent):void
{
    showTextView();
 
    textView.encryptionButton.txt.text = «Decrypt»;
    textView.encryptionButton.txtLP.text = «Decrypt»;
 
    textView.encryptionButton.addEventListener(MouseEvent.MOUSE_UP, decryptFile);
}

Эти функции используют класс mdm.Encrypt для шифрования / дешифрования файла, полученного путем записи полного пути в большом TextField и записи ключа в маленьком.

Примечание редактора: я боюсь, что ActionScript на этом шаге заставит нашу подсветку синтаксиса отключить Firefox (иногда это происходит, и я не знаю почему). На данный момент лучше скачать его, чтобы посмотреть . Приносим извинения за неудобства.

Эти функции вызывают шифрование / дешифрование текста в зависимости от нажатой кнопки.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
private function encryptTextHandler(e:MouseEvent):void
{
    showTextView();
 
    textView.encryptionButton.addEventListener(MouseEvent.MOUSE_UP, encryptText);
}
 
private function decryptTextHandler(e:MouseEvent):void
{
    showTextView();
 
    textView.encryptionButton.txt.text = «Decrypt»;
    textView.encryptionButton.txtLP.text = «Decrypt»;
 
    textView.encryptionButton.addEventListener(MouseEvent.MOUSE_UP, decryptText);
}

Эти функции используют класс mdm.Encrypt для шифрования / дешифрования строки, полученной путем записи текста в большом текстовом поле и записи ключа в маленьком.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
private function encryptText(e:MouseEvent):void
{
    if (textView.encryptText.length != 0 && textView.encryptKey.length != 0)
    {
        /* mdm.Encryption.encryptString(key:String, dataToEncrypt:String, [oldMethod:Boolean = true]):String */
 
        textView.encryptText.text = mdm.Encryption.encryptString(textView.encryptKey.text,textView.encryptText.text,false);
        message.text = «Encryption Completed»;
    }
    else
    {
        trace(«Please fill all fields»);
    }
}
 
private function decryptText(e:MouseEvent):void
{
    if (textView.encryptText.length != 0 && textView.encryptKey.length != 0)
    {
        /* mdm.Encryption.decryptString(key:String, dataToDecrypt:String, [oldMethod:Boolean = true]):String */
 
        textView.encryptText.text = mdm.Encryption.decryptString(textView.encryptKey.text,textView.encryptText.text,false);
        message.text = «Decryption Completed»;
    }
    else
    {
        trace(«Please fill all fields»);
    }
}

TextView — это вид, который появляется при нажатии на одну из четырех основных кнопок, вот код, который его вызывает.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
private function showTextView():void
{
    textView = new TextView();
             
    removeButtonListeners();
 
    animateButtons();
             
    addBackButton();
 
    textView.x = stage.stageWidth / 2;
 
    addChild(textView);
 
    tween = new Tween(textView,»y»,Strong.easeOut,stage.stageHeight + textView.height,stage.stageHeight / 2,1,true);
}

Кнопка Назад отображается, когда TextView активен. При нажатии он возвращает кнопки на экран и удаляет TextView и себя. Также очищает TextField «сообщение».

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
private function addBackButton():void
{
    back = new BackButton();
    back.x = back.width;
    back.y = stage.stageHeight / 2;
             
    addChild(back);
             
    back.addEventListener(MouseEvent.MOUSE_UP, backHandler);
}
         
private function backHandler(e:MouseEvent):void
{
    message.text = «»;
    back.removeEventListener(MouseEvent.MOUSE_UP, backHandler);
             
    removeChild(textView);
             
    tween = new Tween(efButton,»x»,Strong.easeOut,efButton.x,140,1,true);
    tween = new Tween(etButton,»x»,Strong.easeOut,etButton.x,360,1,true);
    tween = new Tween(dfButton,»x»,Strong.easeOut,dfButton.x,140,1,true);
    tween = new Tween(dtButton,»x»,Strong.easeOut,dtButton.x,360,1,true);
             
    removeChild(back);
             
    addButtonListeners();
}

Вернитесь к Fla и в панели свойств, в текстовое поле Class добавьте «Main». Это свяжет основной класс как класс документа.

Теперь тестирование вашего нового приложения приведет к ряду ошибок, возникших в результате использования классов MDM. Чтобы исправить это и заставить ваше шифрование работать, мы должны приобрести Multidmedia Zinc .

Zinc — это программа для разработки приложений на Flash, которая расширяет функциональность Flash Movie с помощью скрипта {mdm}, языка программирования, похожего на ActionScript. Вы можете загрузить бесплатную пробную версию с его веб-сайта.

После загрузки Zinc Builder необходимо связать их скомпилированный компонент с Flash, чтобы интерпретировать скрипт mdm и удалить предупреждения об ошибках.

Перейдите во Flash> «Настройки»> «Категория» ActionScript> «Параметры ActionScript 3.0» и щелкните значок SWC, чтобы добавить компонент.

Протестируйте свой фильм, чтобы создать SWF без ошибок и открыть Zinc.

Создайте новый проект (Cmd + N) и найдите файл SWF.

Используйте левую и правую панели для настройки вашего приложения.

Затем перейдите на вкладку «Расширения» и отметьте комбинированный список mdm_encryption.

Наконец, перейдите в Project> Build Project и нажмите build, чтобы скомпилировать ваше приложение.

Протестируйте свое новое программное обеспечение для шифрования и не забудьте изучить скрипт Zinc {mdm}!

Спасибо за прочтение 🙂