У меня есть массив байтов ASN.1 x509, содержащий по модулю и открытый ключ пары RSA. Моя цель - сделать все возможное, чтобы использовать это для шифрования строки. Я пытаюсь использовать openssl в объективе-c, чтобы выполнить это. Всякий раз, когда я пытаюсь получить объект RSA с использованием d2i_X509
, он возвращает null. Я готов переключиться на другую библиотеку, если я не смогу выполнить это с помощью openssl. Пожалуйста, помогите мне найти что-то, что работает.Как шифровать строку с открытым ключом RSA из массива Byte x509 ASN.1?
0
A
ответ
1
Обычно вы не шифруете строку, используя открытый ключ X.509. Вместо этого вы создадите сильный случайный ключ (определенного качества); используйте обычное симметричное шифрование (например, AES), а затем encyrpt строку с этим. Затем вы шифруете случайный ключ с помощью X.509.
Проконсультируйтесь с хорошей книгой PKI/Crypto (например, http://www.amazon.com/Applied-Cryptography-Protocols-Algorithms-Source/dp/0471117099) о том, почему (разделы по ключевым утечкам, сбрасывание битов, заполнение и (повторное) шифрование дважды).
Если вы действительно настаиваете на этом, посмотрите на функцию https://github.com/dirkx/smime-add-encryption-for-recipient/blob/master/smime-add-encrypt/main.c на функцию pkcs7_encode_rinfo.
x509cert = ... something to read your x509 byte array in.
unsigned char *stuff = "Some zecret string";
int stufflen = strlen(stuff);
EVP_PKEY *pkey;
EVP_PKEY_CTX *pctx = NULL;
assert(pkey = = X509_get_pubkey(x509cert));
assert(pctx = EVP_PKEY_CTX_new(pkey, NULL));
assert(EVP_PKEY_encrypt_init(pctx)==1);
assert((EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_ENCRYPT
EVP_PKEY_CTRL_PKCS7_ENCRYPT, 0, ri)==1);
size_t eklen;
assert(EVP_PKEY_encrypt(pctx, NULL, &eklen, stuff, stufflen)==1);
ek = OPENSSL_malloc(eklen);
assert(ek);
unsigned char *ek = NULL;
assert((EVP_PKEY_encrypt(pctx, ek, &eklen, key, keylen)==1);
printf("Encrypted blurp: ");
for(int i = 0; i < eklen; i++) {
printf("0x%02X ", ek[i];
};
printf("\n");
exit(0);
Смежные вопросы
- 1. Шифровать закрытый ключ DSA с открытым ключом RSA
- 2. Расшифровка RSA с открытым ключом
- 3. RSA с открытым ключом экспортирование
- 4. расшифровывать/шифровать большие объемы данных, используя RSA с открытым ключом
- 5. Как шифровать gpg с открытым ключом ssh?
- 6. Шифровать данные с открытым ключом RSA, не дающим ожидаемых результатов
- 7. Извлечение RSA с открытым ключом из массива x509 полукокса с OpenSSL
- 8. Ошибка разбора RSA с открытым ключом
- 9. Как шифровать с закрытым ключом и расшифровывать с открытым ключом в C# RSA
- 10. шифровать и дешифровать строку текста с RSA и des3 ключом
- 11. как шифровать и расшифровывать только с открытым ключом с помощью rsa C#
- 12. Шифрование ключа AES с открытым ключом RSA
- 13. Шифровать длинную строку с RSA (Java)
- 14. Java RSA-шифрование с открытым ключом
- 15. RSA encrypt с открытым ключом, закодированным base64, в Android
- 16. java.security.InvalidKeyException: неверный формат ключа на генерации RSA с открытым ключом
- 17. RSA с открытым ключом на базу 64
- 18. Как отправить RSA открытым ключом по tcp?
- 19. шифровать и дешифровать с RSA OAEP
- 20. Проверьте знак RSA с открытым 512-битным ключом в C#
- 21. C# RSA Decryption с открытым ключом - Bouncy Castle
- 22. Безопасность Java - проверка сертификата X509 с открытым ключом
- 23. Загрузить ASN.1/DER закодированную пару ключей RSA в C#
- 24. Ошибка «Недопустимый файл X509 ASN.1» в libCurl с axTLS
- 25. Примеры сертификатов X509 с неправильной ASN.1 Encode
- 26. Как извлечь открытый ключ RSA из сертификата x509 в python
- 27. Проблема с открытым ключом RSA (интеграция PHP/Java)
- 28. Шифрование с открытым ключом RSA с использованием модуля и показателя
- 29. C# RSA шифрования с закрытым ключом
- 30. Защищенная конфигурация ASP.NET - как шифровать только открытым ключом?
Вы * уверены * Вы хотите шифровать/дешифровать с парой ключей RSA, а не использовать симметричный ключ сеанса вместо (который является фактическим вещь зашифрованы вашей пары ключей RSA;. Не лежащие в основе данных То, что ключ сеанса для)? Просто любопытно. – WhozCraig
Я уверен. Мне обеспечено это и нужно использовать его – blake305