LINUX.ORG.RU

Ответ на: комментарий от klalafuda

Поставил обе, nettle кажется более страшной.
Мне нужно секретным ключом зашифровать данные, как я понимаю нужно юзать функцию:

int RSA_private_encrypt(int flen, const unsigned char *from,
unsigned char *to, RSA *rsa,int padding);

Очевидно что from,to указатели на данные до и после зашифровки, flen длина данных, а что такое padding ??? и как заполнить данными структуру RSA ???

Помогите плиз кто знает !!!

anonymous
()
Ответ на: комментарий от anonymous

Подозреваю что padding это тип ключа, но как мой секретный ключ расположенный в памяти превратить в структуру RSA ???

anonymous
()
Ответ на: комментарий от anonymous


hm...
$ man RSA_private_enctypt

http://netbsd.gw.com/cgi-bin/man-cgi?RSA_private_encrypt++NetBSD-current

---cut---
padding denotes one of the following modes:

RSA_PKCS1_PADDING
PKCS #1 v1.5 padding. This function does not handle the algorithmI-
dentifier specified in PKCS #1. When generating or verifying PKCS
#1 signatures, RSA_sign(3) and RSA_verify(3) should be used.

RSA_NO_PADDING
Raw RSA signature. This mode should only be used to implement cryp-
tographically sound padding modes in the application code. Signing
user data directly with RSA is insecure.
---cut---

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от anonymous

> Это ладно, как получить из готового ключа в памяти структуру rsa ???

если честно, руками я как-то не работал с OpenSSL/RSA
может быть google поможет? по "OpenSSL RSA Examples"
например http://www.linuxjournal.com/article/6826
или это http://www.openssl.org/docs/crypto/pem.html

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от anonymous

В самом деле nettle проще. Вот пример:

/* объявляем ключи */
struct rsa_public_key pub;
struct rsa_private_key key;

/* так надо делать перед первым использованием */
rsa_public_key_init(&pub);
rsa_private_key_init(&key);

/* так генерируется пара ключей в 1024 бита */
rsa_generate_keypair(&pub, &key, NULL, NULL, NULL, NULL, 1024, 3);

/* Зашифруем строку приватным ключом */
char *str = "This is some labuda to be encrypted";
mpz_t output;
rsa_encrypt(&key, NULL, NULL, strlen(str), str, output);

/* Теперь получим шифрованный буфер */
size_t size = 500;
char *buf = malloc(size);
if(mpz_get_str(buf, size, &output) == NULL)
{ 
     if(size == 20000) abort(); /* траблы */
     size += 500; buf = realloc(buf, size);
}

/* Аналогично с дешифровкой */

Spectrum
()
Ответ на: комментарий от Spectrum

> /* так генерируется пара ключей в 1024 бита */
> rsa_generate_keypair(&pub, &key, NULL, NULL, NULL, NULL, 1024, 3);

ключевое слово: генерится :)
генерится то оно тривиально и в OpenSSL/RSA.

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda

Так и написал бы про OpenSSL, если это тривиально. Люди ждут реальной помощи, а не ссылок на тупо написанную документацию (а хуже доков, чем по OpenSSL, я в жизни не читал)

Spectrum
()
Ответ на: комментарий от Spectrum

> Так и написал бы про OpenSSL, если это тривиально. Люди ждут реальной помощи, а не ссылок на тупо написанную документацию

как я уже написал, с RSA в OpenSSL я не работал, все по man-ам. на сколько хватило времени/желания/терпения на столько помог. далше уже сами.

> (а хуже доков, чем по OpenSSL, я в жизни не читал)

с этим трудно не согласиться.

// wbr

klalafuda ★☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.