![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Граждане гуру флэша, подскажите как работать с методом шифрования RSA?
Я уже всю голову сломал. вроде всё понятно, но не работает! Как я понял, значение myPEMPublicKeyString нужно генерировать на странице http://crypto.hurlant.com/demo/ , нажимаю кнопку generate Но какое значение взять там? пытался взять значение P (в статье http://ru.wikipedia.org/wiki/RSA википедии написано что P играет роль открытого ключа), возникает ошибка I DONT KNOW HOW TO HANDLE DER stuff of TYPE 27 Error: Error #2030: Обнаружен конец файла. at flash.utils::ByteArray/readBytes() at com.hurlant.util.der: ER$/parse()[C:\project\com\hurlant\util\der\DER.as:134]at com.hurlant.util.der::PEM$/readRSAPublicKey()[C:\project\com\hurlant\util\der\PEM.as:77] Cannot display source code at this location. пытался взять другие значения на той же странице, тоже возникают ошибки... что же использовать в значении ключа myPEMPublicKeyString? package main { import com.hurlant.crypto.rsa.RSAKey; import com.hurlant.util.Hex; import com.hurlant.util.der.PEM; import com.hurlant.util.Base64; public class MainClass extends MovieClip { public var myPEMPublicKeyString = "-----BEGIN PUBLIC KEY-----9e1d1a0171c24f03bb883228b2dfd12d6afe91c3f89733b2bef20f7218910164679f0f7fead168617031f0c19d982600fd1911af74d6556922b5ba8d40e0a563-----END PUBLIC KEY-----"; public var dataCode:ByteArray; public var encryptedResult:ByteArray = new ByteArray(); public var rsa:RSAKey; public function MainClass():void { //попытка зашифровать dataCode = Hex.toArray(Hex.fromString("codeMy")); rsa = PEM.readRSAPublicKey(myPEMPublicKeyString); rsa.encrypt(dataCode, encryptedResult, dataCode.length); // } } }
__________________
так то оно так, но ежели иначе - так вот тебе и пожалуста |
|
|||||
|
не знаю как на флеше. я около месяца с ним только знаком.
но по ссылке http://crypto.hurlant.com/demo/ я не нашел откуда можно скопировать "готовый ключ". там етсь только данные для его состввления e – открытый (public) показатель d – частный (private) показатель. (n; e) – открытый (public) ключ (n; d) – частный (private) ключ показатели и модули по указанной вами ссылке приводятся Пример шифрования: M - исходное сообщение C - зашифрованный текст C = (M^e)*( mod n ) // ( C = (M^e) % n ) // (e; n) - открытый публичный ключ (public key), полученный от удаленного хоста во время процедуры handshake M = 6; e = 5; n = 133 d = 65 Тогда: C = M^e % n = 6^5 % 133 = 7776 % 133 = 62 пример дешифрования: M - исходное сообщение C - зашифрованный текст M = 6; e = 5; n = 133 d = 65 Тогда: M = C^d % n = 62^65 % 133 = 62 * 62^64 % 133 = 62 * (62^2)^32 % 133 = 62 * 3844^32 % 133 = 62 * (3844 % 133)^32 % 133 = 62 * 120^32 % 133 = ... = 62 * 43 % 133 = 2666 % 133 = 6 Добавлено через 16 минут а вообще ключики можно генирить не только на том сайте. есть куча сторонних утилит. от openssl до puttygen http://www.chiark.greenend.org.uk/~s.../download.html сгенерите себе ключики (открытый и закрытый). вы всгеда можете посмотреть их "строковое значение" в файлах, куда вы сохраните их Последний раз редактировалось catyoshi; 05.08.2009 в 16:12. |
|
|||||
|
catyoshi, спасибо большое за ответ и дельные советы
__________________
так то оно так, но ежели иначе - так вот тебе и пожалуста |
|
|||||
|
попробывал сейчас достать данные из своего открытого ключа
получилсоь примерно следюущее public_key - ключ из файла result_string = base64_decode(public_key); result_string выглядит так: 'ssh-rsa#n;e' где n и е описаны выше. как я понмиаю, вам надо сделать обратное преобразование public_key = base64_encode( 'ssh-rsa#n;e' ); n и е надо взять в виде текста (не в Hex и не в base64) Добавлено через 15 минут на всякий случай алгоритм составления своих n, e, d p и q - простые числа (т.е. числа которые делятся без остатка только сами на себя) алгоритм для нахождения этих чисел вроде придуман Евклидом. в инете должны быть его реализации p != q # модуль n = p * q; m = ( p - 1 ) * ( q - 1 ); 1 < e < m // e = 1; while ( ! ( m % ++e ) ) {} d = 0; while ( ( ( ++d * e ) % m ) != 1 ) {} d != 0 вот собственно и все о составных частях RSA ключа |
|
|||||
|
с этим ясно, а какую вставку добавлять чтоб получить private key?
Добавлено через 59 минут помогите разобраться, как опубликовать ключи, в нормальном виде, пользуясь классами, прилагаемой библиотеки com.hurlant
__________________
так то оно так, но ежели иначе - так вот тебе и пожалуста |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:06. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| rsa key |
|
|