Автор | Сообщение |
|
| постоянный участник
|
Пост N: 2513
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.12.12 08:41. Заголовок: Аналоги функции HB_Crypt и HB_Decrypt для Harbour'а ?
Всем привет. Подскажите пожалуйста, есть ли в Харборе фунции как в хХарборе HB_Crypt и HB_Decrypt ?
|
|
|
Ответов - 34
, стр:
1
2
All
[только новые]
|
|
|
| |
Пост N: 45
Зарегистрирован: 03.02.12
|
|
Отправлено: 09.07.14 12:05. Заголовок: Dima пишет: hb_blow..
Dima пишет: цитата: | hb_blowfishKey( <cPass> ) -> <bfKey> hb_blowfishEncrypt( <bfKey>, <cData> ) -> <cCryptedData> hb_blowfishDecrypt( <bfKey>, <cCryptedData> ) -> <cData> |
| Спасибо!
|
|
|
|
| |
Пост N: 303
Зарегистрирован: 16.12.08
|
|
Отправлено: 09.07.14 12:13. Заголовок: Небольшие примеры ис..
Небольшие примеры использования данных функций: в xHarbour: /* * Test program for blowfish routines */ #include "common.ch" PROCEDURE MAIN() LOCAL cData := "Harbour Power" LOCAL cKey := hb_blowfishKey( "password" ) LOCAL cCrypted := hb_blowfishEncrypt( cKey, cData ) LOCAL cDecrypted ? cCrypted ? cDecrypted := hb_blowfishDecrypt( cKey, cCrypted ) ? cDecrypted == cData ? LEN( cDecrypted ) == LEN( cData ) RETURN Пример от Пшемека для harbour: proc main() local cText, cEncrypted, cDecrypted, cPass, bfKey cText := "This is my secret message." cPass := "Top Secret ;-)" bfKey := hb_blowfishKey( cPass ) /* encrypt data */ cEncrypted := hb_blowfishEncrypt( bfKey, cText ) /* dencrypt data */ cDecrypted := hb_blowfishDecrypt( bfKey, cEncrypted ) ? "plain text:", hb_strToExp( cText ) RETURN nil
|
|
|
|
| постоянный участник
|
Пост N: 5297
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.01.17 12:15. Заголовок: Всем привет. Есть ли..
Всем привет. Есть ли для харбора готовые функции для алгоритма RSA ?
|
|
|
|
| |
Пост N: 6255
Зарегистрирован: 17.05.05
|
|
Отправлено: 26.01.17 12:25. Заголовок: Andrey Смотри приме..
Andrey Смотри примеры в HBSSL
|
|
|
|
| постоянный участник
|
Пост N: 5298
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.01.17 12:41. Заголовок: Dima пишет: Смотри ..
Dima пишет: Посмотрел... Как запустить то ? Совсем забыл как собирать... И как перетащить на МиниГуи ?
|
|
|
|
| |
Пост N: 6256
Зарегистрирован: 17.05.05
|
|
Отправлено: 26.01.17 13:01. Заголовок: Andrey пишет: И как..
Andrey пишет: цитата: | И как перетащить на МиниГуи ? |
| КаГ бы ни чего перетаскивать и не нужно , так как: * Updated: Harbour Compiler 3.2.0dev (r2014-01-21 20:41): * New: added HbSSL wrapper library and OpenSSL corresponding libraries.
|
|
|
|
| moderator
|
Пост N: 1063
Зарегистрирован: 06.07.06
|
|
Отправлено: 26.01.17 13:38. Заголовок: Может, я что-то упус..
Может, я что-то упустил, но в hbssl нет всех нужных функций для RSA. Полгода назад я написал небольшой набор - обертки для RSA_public_encrypt(), RSA_private_decrypt() и пр., но применить на практике не было случая.
|
|
|
|
| постоянный участник
|
Пост N: 5299
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.01.17 15:08. Заголовок: alkresin пишет: Мож..
alkresin пишет: цитата: | Может, я что-то упустил, но в hbssl нет всех нужных функций для RSA. |
| Мне нужны функции для работы со строками. alkresin пишет: цитата: | Полгода назад я написал небольшой набор - обертки для RSA_public_encrypt(), RSA_private_decrypt() и пр., но применить на практике не было случая. |
| А можете выложить ? Попробуем на практике...
|
|
|
|
| |
Пост N: 6258
Зарегистрирован: 17.05.05
|
|
Отправлено: 26.01.17 22:32. Заголовок: Andrey пишет: Есть ..
Andrey пишет: цитата: | Есть ли для харбора готовые функции для алгоритма RSA ? |
| А если реально , то для чего это тебе нужно ?
|
|
|
|
| moderator
|
Пост N: 1064
Зарегистрирован: 06.07.06
|
|
Отправлено: 27.01.17 09:08. Заголовок: Вот минимально необх..
Вот минимально необходимый набор функций: Скрытый текст #include "hbapi.h" #include "hbapiitm.h" #include "hbapierr.h" #include <openssl/evp.h> #include <openssl/ssl.h> #include <openssl/rand.h> static int padding = RSA_PKCS1_PADDING; static RSA * createRSA( unsigned char * skey, int iPublic ) { RSA * rsa = NULL; BIO * bio = BIO_new_mem_buf( skey, -1 ); if( !bio ) return 0; if( iPublic ) rsa = PEM_read_bio_RSA_PUBKEY( bio, &rsa,NULL, NULL ); else rsa = PEM_read_bio_RSAPrivateKey( bio, &rsa,NULL, NULL ); BIO_free( bio ); return rsa; } HB_FUNC( OSSL_RSA_PUBLIC_ENCRYPT ) { RSA * rsa = createRSA( (unsigned char *) hb_parc(2), 1 ); const unsigned char * data = (const unsigned char *) hb_parc( 1 ); unsigned char sEncrypted[4098]; int nResult; nResult = RSA_public_encrypt( hb_parclen(1), data, sEncrypted, rsa, padding ); if( nResult == -1 ) hb_ret(); else { hb_retclen( (const char *) sEncrypted, nResult ); } RSA_free( rsa ); } HB_FUNC( OSSL_RSA_PRIVATE_DECRYPT ) { RSA * rsa = createRSA( (unsigned char *) hb_parc(2), 0 ); const unsigned char * data = (const unsigned char *) hb_parc( 1 ); unsigned char sDecrypted[4098]; int nResult; nResult = RSA_private_decrypt( hb_parclen(1), data, sDecrypted, rsa, padding ); if( nResult == -1 ) hb_ret(); else { hb_retclen( (const char *) sDecrypted, nResult ); } RSA_free( rsa ); }
| Для работы нужны libeay32.dll, ssleay32.dll, для сборки программы, соответственно, liblibeay32.a и libssleay32.a - собирать желательно с Mingw. Сгенерировать ключи можно самой openssl.exe. Сначала личный: openssl genrsa -out private.pem 2048 а потом из него публичный: openssl rsa -in private.pem -outform PEM -pubout -out public.pem Публичный отдаете, например, мне - и я теперь могу пересылать вам зашифрованные строки: cOriginal := "Some secret text" cCrypted := OSSL_RSA_PUBLIC_ENCRYPT( cOriginal, Memoread("public.pem") ) а вы - их расшифровывать: cOriginal := OSSL_RSA_PRIVATE_DECRYPT( cCrypted, Memoread("private.pem") )
|
|
|
|
| постоянный участник
|
Пост N: 5300
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.01.17 19:05. Заголовок: alkresin пишет: Вот..
alkresin пишет: цитата: | Вот минимально необходимый набор функций: |
| Спасибо большое ! Буду пробовать...
|
|
|
|
|
| |
Пост N: 510
Зарегистрирован: 08.07.06
|
|
Отправлено: 28.01.17 22:29. Заголовок: сорри, что вмешиваюс..
сорри, что вмешиваюсь. Dima пишет: цитата: | А если реально , то для чего это тебе нужно ? |
| RSA - один из алгоритмов АССИМЕТРИЧНОГО шифрования. Предназначен для обмена данными по открытым каналам. Основа протокола https:// Правда недавно стало известно, что и это не панацея. Его хакнули. Но это уже офф. Вкратце - есть Петя, он дает двум своим друзьям - Васе и Коле ПУБЛИЧНЫЙ ключ, при помощи которого они шифруют свои сообщениx и отсылают их Пете. При этом - ни Вася, ни Коля не могут расшифровать сообщения друг друга. Они не могут расшифровать даже свои собственные сообщения, тк для их расшифровки у Пети есть ПРИВАТНЫЙ ключ, который он НИКОМУ НЕ ДАЕТ. Т.е. зашифровка происходит с одним ключом, а расшифровка - с другим.
|
|
|
|
| |
Пост N: 6263
Зарегистрирован: 17.05.05
|
|
Отправлено: 28.01.17 22:41. Заголовок: Sergy пишет: Его ха..
Sergy пишет: цитата: | Его хакнули. Но это уже офф. |
|
|
|
|
|
| |
Пост N: 511
Зарегистрирован: 08.07.06
|
|
Отправлено: 28.01.17 22:55. Заголовок: Уточню: хакнули не с..
Если интересно, тогда уточню: хакнули не сам RSA (он довольно устойчив), а протокол обмена ключами, на котором построен https и прочие PGP. Суть вкратце такая: На канал связи между Петей и его друзьями садится некто, пусть ОЛЕГ. В тот момент, когда Петя посылает публичный ключ своим друзьям, Олег сохраняет его и посылает Васе и Коле свой собственный публичный ключ. Вася и Коля, шифруя свои сообщения подмененным ключом, не знают об этом и Олег (сидящий на линии), расшифровывает их сообщения своим приватным ключом, спокойно читает их, при необходимости корректирует и отсылает их Пете, шифруя их уже Петиным публичным ключом. Все трое счастливы, но Олег счастливее всех троих вместе взятых. Атака называется man-in-the-middle, борьбой с ней является передача публичного ключа по защищенным каналам связи. Как раз теряется то преимущество, которое завялено как основное в алгоритмах ассиметричного шифрования. Банки с недавних пор делают это только на бумаге, требуя личного присутствия фин.директора организации. Из недавнего: https://www.searchengines.ru/sert-ssl.html
|
|
|
Ответов - 34
, стр:
1
2
All
[только новые]
|
|