Форум: "Прочее";
Текущий архив: 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
затем вызывать CryptSignMessagevar 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