Зашифровать / расшифровать с помощью закрытого ключа - PullRequest
1 голос
/ 16 июня 2011

Я хотел бы реализовать некоторые меры безопасности в некоторых моих приложениях Flash / PHP.

У меня есть несколько приложений Flash, которые взаимодействуют с файлами PHP, и PHP отправляет данные в виде строки get (например, name=John&sname=Doe&age=24&balance=12.4). Вместо всех этих переменных я хотел бы, чтобы он отправлял одну переменную (например: flashvar=jr9afgaw9-fg90agfawf7gw), которая содержала бы эти значения, поэтому Flash расшифровывает строку и получает вещественных и полезных переменных.

Я хочу зашифровать это с помощью закрытого ключа и использовать тот же закрытый ключ для расшифровки этого во Flash. Если кто-то захочет декодировать сообщение, отправляемое PHP, ему придется декомпилировать файл флэш-памяти и найти закрытый ключ, который я использую во Flash, чтобы декодировать сообщение, а затем декодировать его.

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

Я новичок в области криптографии, и я хотел бы получить некоторые предложения для этого.

Спасибо!

Ответы [ 3 ]

3 голосов
/ 16 июня 2011

«Общий закрытый ключ» называется симметричным ключом. Стандартный симметричный алгоритм, используемый сегодня: AES . Я понятия не имею, имеют ли php или flash возможность использовать AES (Google это делает), но если они это сделают, вы можете жестко закодировать ключ AES в своем коде и использовать его для шифрования и дешифрования данных. Однако жесткое кодирование ключа - это очень плохая криптография и это не более, чем запутывание.

Еще одна вещь, которую нужно иметь в виду, это режим шифрования, который вы используете. Cipher Block Chaining (CBC) требует использования вектора инициализации (что-то вроде соли для хэша), поэтому два одинаковых значения, зашифрованные одним и тем же ключом, но с разным IV, приведут к различному тексту шифра. ECB не нуждается в векторе инициализации, но он менее защищен. Для ваших нужд я бы пошел в ЕЦБ, чтобы вам не пришлось беспокоиться о капельнице.

Google - это очень хороший способ поиска информации, вы должны его использовать.

1 голос
/ 16 июня 2011

После быстрого поиска я увидел, что ActionScript 3 поддерживает шифрование с помощью библиотеки ASCrypt3 . По данным сайта, AES Rijndael поддерживается.

Rijndael также поддерживается в PHP с использованием расширения mcrypt . Вот довольно хороший пример , взятый из руководства :

$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$key = "This is a very secret key";
$text = "Meet me at 11 o'clock behind the monument.";
echo strlen($text) . "\n";

$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
echo strlen($crypttext) . "\n";
0 голосов
/ 17 июня 2011

Если вы хотите зашифровать данные, я бы пошел с библиотекой ASCrypt3o .Он работает очень хорошо и поддерживает несколько типов шифрования.Вы можете увидеть демо этого здесь нажмите на вкладку секретного ключа.

...