>  기사  >  백엔드 개발  >  OpenSSL에서 RSA 키를 PKCS#1에서 X.509 형식으로 변환하는 방법은 무엇입니까?

OpenSSL에서 RSA 키를 PKCS#1에서 X.509 형식으로 변환하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-07 20:14:03316검색

How to Convert RSA Keys from PKCS#1 to X.509 Format in OpenSSL?

RSA 키를 PKCS#1에서 X.509 형식으로 변환

OpenSSL에서 RSA 키는 두 가지 형식으로 저장할 수 있습니다.

  • PKCS#1: 공개 키만 포함합니다.
  • X.509: 알고리즘 OID와 공개 키.

.NET은 ASN.1/DER 인코딩 키(PKCS#1)와 PEM 인코딩 키(X.509)를 모두 처리할 수 있습니다. PKCS#1 키를 X.509 키로 변환하려면:

1. PEM_write_bio_RSAPublicKey 대신 PEM_write_bio_PUBKEY를 사용하세요.

  • PEM_write_bio_RSAPublicKey는 공개 키(PKCS#1)만 씁니다.
  • PEM_write_bio_PUBKEY는 SubjectPublicKeyInfo(X.509)를 씁니다.

2. EVP_PKEY_set1_RSA를 사용하여 RSA 키를 EVP_PKEY로 변환:

  • 이 함수는 RSA 키를 알고리즘 OID가 포함된 EVP_PKEY로 변환합니다.

예제 코드 :

<code class="c++">#include <openssl/pem.h>
#include <openssl/rsa.h>
#include <openssl/evp.h>

int main() {
    RSA *rsa = RSA_new();
    BN_set_word(BN_new(), RSA_F4);
    RSA_generate_key_ex(rsa, 2048, NULL, NULL);

    EVP_PKEY *pkey = EVP_PKEY_new();
    EVP_PKEY_set1_RSA(pkey, rsa);

    BIO *pem = BIO_new_file("rsa-public.pem", "w");
    PEM_write_bio_PUBKEY(pem, pkey);

    RSA_free(rsa);
    EVP_PKEY_free(pkey);
    return 0;
}</code>

이 프로그램은 RSA 키 쌍을 생성하고 공개 키를 X.509 형식으로 변환한 후 "rsa-public.pem" 파일에 저장합니다.

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.