> 백엔드 개발 > C++ > 본문

.Net에서 사용하기 위해 OpenSSL RSA 키를 변환하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-11-04 09:19:30
원래의
450명이 탐색했습니다.

How to Convert OpenSSL RSA Keys for Use with .Net?

.Net에서 OpenSSL RSA 키 사용

OpenSSL은 다양한 키 형식을 제공하므로 다양한 모듈과의 호환성 문제가 발생합니다.

문제: .Net에는 "------BEGIN RSA PUBLIC KEY-----"가 아닌 "-----BEGIN PUBLIC KEY-----" 형식의 키가 필요합니다. OpenSSL에서 생성된 형식입니다.

해결 방법:

PEM_write_bio_RSAPublicKey 대신 PEM_write_bio_PUBKEY를 사용하여 공개 키를 작성하세요. PEM_write_bio_PUBKEY에는 필수 "SubjectPublicKeyInfo" 구조가 포함되어 있지만 PEM_write_bio_RSAPublicKey는 공개 키만 출력합니다.

키를 필수 형식으로 변환:

OpenSSL RSA 키를 .Net에서 요구하는 형식인 경우 다음 코드를 사용할 수 있습니다.

<code class="cpp">BIO_FILE_ptr pem1(BIO_new_file("rsa-public-1.pem", "w"), ::BIO_free);
EVP_KEY_ptr pkey(EVP_PKEY_new(), ::EVP_PKEY_free);

rc = RSA_generate_key_ex(rsa.get(), 2048, bn.get(), NULL);
ASSERT(rc == 1);

rc = EVP_PKEY_set1_RSA(pkey.get(), rsa.get());
ASSERT(rc == 1);

rc = PEM_write_bio_PUBKEY(pem1.get(), pkey.get());
ASSERT(rc == 1);</code>
로그인 후 복사

이렇게 하면 필수 형식의 공개 키가 포함된 "rsa-public-1.pem"이라는 PEM 파일이 생성됩니다.

예:

"publicKey" 변수가 .Net에서 인식되지 않는 형식의 키를 보유하는 다음 예를 고려해 보세요.

<code class="cpp">string publicKey = @"-----BEGIN RSA PUBLIC KEY-----
...
-----END RSA PUBLIC KEY-----";

CryptoKey key = CryptoKey.FromPublicKey(publicKey, "");
RSA rsa = key.GetRSA();</code>
로그인 후 복사

교체 제공된 코드를 사용하여 생성된 키가 포함된 "publicKey"는 CryptoKey 개체를 생성하는 동안 발생한 예외를 해결합니다.

위 내용은 .Net에서 사용하기 위해 OpenSSL RSA 키를 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!