Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2011.04.03;
Скачать: [xml.tar.bz2];

Вниз

Электронная подпись RSA и CryptoAPI   Найти похожие ветки 

 
stas ©   (2010-12-16 17:30) [0]

Поясните пожалуйста, на пальцах если можно, как сделать электронную подпись по алгоритму RSA. Информации вроде бы нашел много, но никак немогу уложить в голове как что делается.
Мне надо чтобы один человек имел закрытый ключ, а несколько человек открытые и могли проверять подпись.
Как я понимаю процесс:
1. Единоразово создаю 2 ключа закрытый и открытый.
2. Закрытый остается у этого 1-го человека, а открытый раздается всем остальным
3. Этот 1 чел подписывает сообщение допустим "Hello" в результате получаем зашифрованную строку. (или как?)
4. Расшифровать ее могут только владельцы открытых ключей и проверить верна ли подпись.

Если кто в этом понимает, скажите какие мне надо использовать cryptoAPI на каждом этапе?

p.s. заголовочный файл для CryptoAPI имеется.


 
Ega23 ©   (2010-12-16 17:36) [1]


> Как я понимаю процесс:


Всё правильно.
Иногда (если большие объёмы данных гоняются), создаётся одноразовый сессионный ключ симметричного шифрования (AES, например), этим ключом зашифровываются сами данные, сам ключ шифруется приватным ключом асимметричного шифрования и отправляется клиентам.
Те открывают ключ публичным ключом и расшифровывают им данные.
Просто симметричное шифрование гораздо быстрее, чем асиметричное работает.


 
stas ©   (2010-12-16 17:38) [2]

Ega23 ©   (16.12.10 17:36) [1]
Ясно спасибо.
А какие функции из CryptoApi надо использовать, допустим чтобы получить эти 2 ключа?


 
Ega23 ©   (2010-12-16 17:45) [3]


> А какие функции из CryptoApi надо использовать, допустим
> чтобы получить эти 2 ключа?


А я без понятия, я не использовал CryptoApi.


 
Eraser ©   (2010-12-16 17:48) [4]

> stas ©  

http://tinyurl.com/25a97rv


 
Рамиль_   (2010-12-16 17:59) [5]

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


 
xayam ©   (2010-12-16 18:00) [6]

Чего-то уже было похожее...
http://www.delphimaster.net/view/15-1276424776/0;8
Ну и так
http://www.delphimaster.net/?s=%2Bdelph*+%2BCryptoAPI*


 
Ega23 ©   (2010-12-16 19:47) [7]


>  Шифровать надо открытым ключом пользователя, для которого
> предназначено сообщение.


Если чё - они одинаковые. 1 - зашифровал, 2 - расшифровал. 2 - зашифровал, 1 - расшифровал.
А кому какой ключ давать - это твоё дело. Но нормальные люди приватный ключ в офисе в сейфе хранят. А публичный - на то и публичный.


 
stas ©   (2010-12-16 19:58) [8]

Eraser ©   (16.12.10 17:48) [4]
Да я искал) я не могу найти полный пример, а то как-то кусками непонятно.

Ega23 ©   (16.12.10 17:45) [3]
А что использовал? мне в принципе не принципиально Crypto API.


 
Ega23 ©   (2010-12-16 20:41) [9]


> А что использовал?

Не помню точно. Завтра скажу.


 
Германн ©   (2010-12-16 20:43) [10]


> stas ©

Посмотри это http://sourceforge.net/projects/tplockbox/


 
Rouse_ ©   (2010-12-16 20:43) [11]


> Рамиль_   (16.12.10 17:59) [5]
> Только не вздумай шифровать закрытым ключом.

Фига себе - откровение :) Это где ты такое вычитал? :)


 
DVM ©   (2010-12-16 23:10) [12]


> stas ©

Успехов тебе в освоении CryptoAPI. Из всех API Microsoft это пожалуй самый запутанный и нелогичный имхо. Одной и той же цели в нем можно достичь добрым десятком иногда способов, сотни функций, часть из которых на мой взгляд просто не нужны, только сбивают с толку, некоторые функции работают не так как описано. Все это имхо.


 
DVM ©   (2010-12-16 23:25) [13]


> stas ©

Полазай фот по этому форуму, там много чего есть http://www.cryptopro.ru/forum
Я там нашел ответы на многие мои вопросы в свое время.


 
Palladin ©   (2010-12-17 00:13) [14]

http://rsdn.ru/article/crypto/usingcryptoapi.xml


 
Германн ©   (2010-12-17 01:28) [15]


> DVM ©


> Palladin ©

С учетом
> мне в принципе не принципиально Crypto API

думаю, что автора на 100% устроит продукт легендарной TurboPower. Тем более что он ныне бесплатный и с исходниками.

P.S. "В принципе не принципиально" хорошо звучит. :)


 
Ega23 ©   (2010-12-17 01:56) [16]

Есть под Delphi исходники и больших целых чисел, и основные алгоритмы шифрования на их основе (MD2, SHA, AES, RSA). Идёт вся эта байда просто в виде набора pas-файлов. Утром постараюсь ссылку дать.


 
Ega23 ©   (2010-12-17 09:56) [17]

Так, ну вот ссылка
http://www.submanifold.be/
Там в менюшке по FGint кликайте


 
Dennis I. Komarov ©   (2010-12-17 11:25) [18]


> думаю, что автора на 100% устроит продукт легендарной TurboPower.
>  Тем более что он ныне бесплатный и с исходниками.

Моно подробней, что за чудо которое фри. Сертификат есть?


 
Медвежонок ХМЛ ©   (2010-12-17 12:10) [19]

Через крипто-апи:

Заполнить структуру CRYPT_SIGN_MESSAGE_PARA
затем вызывать CryptSignMessage

var SignParams     : CRYPT_SIGN_MESSAGE_PARA;
   pbDummyArray,cbDummyArray : Pointer;
begin
Result := False; cbSignatureLen := 0; pbSignature := nil;
ZeroMemory(@SignParams,SizeOf(CRYPT_SIGN_MESSAGE_PARA));
SignParams.cbSize                   := SizeOf(CRYPT_SIGN_MESSAGE_PARA);
SignParams.dwMsgEncodingType        := PKCS_7_ASN_ENCODING or X509_ASN_ENCODING;
SignParams.pSigningCert             := PAuthorCert;
SignParams.HashAlgorithm.pszObjId   := szOID_CP_GOST_R3411; // Заменить гост на нужный алгоритм
SignParams.HashAlgorithm.Parameters.cbData := 0;
SignParams.cAuthAttr                := 0;
SignParams.dwInnerContentType       := 0;
SignParams.cMsgCrl                  := 0;
SignParams.cUnauthAttr              := 0;
//Что-то тут еще со временем
//......................
SignParams.dwFlags                  := 0;

SignParams.cMsgCert   := 1;
SignParams.rgpMsgCert := @PAuthorCert;

//Что именно подписываем
pbDummyArray   := @AMessage;
cbDummyArray   := @AMessageLen;

if CryptSignMessage(@SignParams,ADetached,1,pbDummyArray,cbDummyArray,nil,cbSignatu reLen) then
 begin
  GetMem(pbSignature,cbSignatureLen);
  Result := CryptSignMessage(@SignParams,ADetached,1,pbDummyArray,cbDummyArray,pbSignature,c bSignatureLen);
 end;


 
stas ©   (2010-12-17 14:27) [20]

Ega23 ©   (17.12.10 09:56) [17]
Ага спасибо скачал.
RSASign(test, d, n, Nilgint, Nilgint, Nilgint, Nilgint, signature);
d - это закрытый ключ?
RSAVerify(test, signature, e, n, ok);
e- открытый.

Правильно ?


 
Ega23 ©   (2010-12-17 14:31) [21]


> Правильно ?


А я не помню уже. Читай доку.


 
stas ©   (2010-12-17 14:40) [22]

Ega23 ©   (17.12.10 14:31) [21]
ага, ок.  Спасибо еще раз!
Всем спасибо!



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2011.04.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.004 c
2-1292609220
Oleg_teacher
2010-12-17 21:07
2011.04.03
PNG+Delphi


15-1292349556
Baks
2010-12-14 20:59
2011.04.03
WordPress Drupal Joomla или самому ручками


15-1292496064
iPhone Owner
2010-12-16 13:41
2011.04.03
отпала кнопка переключения громкости


6-1236188615
dron1990
2009-03-04 20:43
2011.04.03
технология DCOM


15-1292697083
aka
2010-12-18 21:31
2011.04.03
магический квадрат





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский