
openssl_public_encrypt 함수를 사용하려면 먼저 공개키를 생성해야 합니다. 공개키를 생성하는 방법은 두 가지가 있습니다.
1. RSA 공개키를 생성하는 방법입니다. RSA 공개키를 생성하는 방법은 OpenSSL의 rsa_new 함수를 사용하여 공개키를 생성할 수 있습니다.
#hostingforum.kr
c
RSA *rsa = RSA_new();
BIGNUM *e = BN_new();
BN_set_word(e, 65537);
RSA_generate_key_ex(rsa, 2048, e, NULL);
2. ECDSA 공개키를 생성하는 방법입니다. ECDSA 공개키를 생성하는 방법은 OpenSSL의 EC_KEY_new 함수를 사용하여 공개키를 생성할 수 있습니다.
#hostingforum.kr
c
EC_KEY *ec_key = EC_KEY_new_by_curve_name(NID_secp521r1);
public_key 인자는 RSA 또는 EC_KEY 객체를 사용하여 생성한 공개키를 사용해야 합니다.
#hostingforum.kr
c
RSA *rsa = RSA_new();
// RSA 공개키 생성
// ...
EC_KEY *ec_key = EC_KEY_new_by_curve_name(NID_secp521r1);
// ECDSA 공개키 생성
// ...
// RSA 공개키 사용
openssl_public_encrypt(data, encrypted_data, rsa, padding);
// ECDSA 공개키 사용
openssl_public_encrypt(data, encrypted_data, ec_key, padding);
key 인자는 공개키 객체를 사용하여 암호화를 수행해야 합니다.
#hostingforum.kr
c
openssl_public_encrypt(data, encrypted_data, public_key, padding);
padding 인자는 암호화에 사용할 패딩을 지정해야 합니다. OpenSSL에서는 PKCS1_PADDING, RSA_PKCS1_PADDING, RSA_PKCS1_OAEP_PADDING, RSA_PKCS1_OAEP_MGF1_PADDING, RSA_PKCS1_OAEP_SHA1_PADDING, RSA_PKCS1_OAEP_SHA256_PADDING, RSA_PKCS1_OAEP_SHA384_PADDING, RSA_PKCS1_OAEP_SHA512_PADDING, RSA_PKCS1_PSS_PADDING, RSA_PKCS1_PSS_MGF1_PADDING, RSA_PKCS1_PSS_MGF1_SHA1_PADDING, RSA_PKCS1_PSS_MGF1_SHA256_PADDING, RSA_PKCS1_PSS_MGF1_SHA384_PADDING, RSA_PKCS1_PSS_MGF1_SHA512_PADDING, RSA_PKCS1_PSS_SHA1_PADDING, RSA_PKCS1_PSS_SHA256_PADDING, RSA_PKCS1_PSS_SHA384_PADDING, RSA_PKCS1_PSS_SHA512_PADDING, RSA_NO_PADDING, RSA_PKCS1_ENCRYPT_PADDING, RSA_PKCS1_OAEP_PADDING, RSA_PKCS1_OAEP_MGF1_PADDING, RSA_PKCS1_OAEP_SHA1_PADDING, RSA_PKCS1_OAEP_SHA256_PADDING, RSA_PKCS1_OAEP_SHA384_PADDING, RSA_PKCS1_OAEP_SHA512_PADDING, RSA_PKCS1_PSS_PADDING, RSA_PKCS1_PSS_MGF1_PADDING, RSA_PKCS1_PSS_MGF1_SHA1_PADDING, RSA_PKCS1_PSS_MGF1_SHA256_PADDING, RSA_PKCS1_PSS_MGF1_SHA384_PADDING, RSA_PKCS1_PSS_MGF1_SHA512_PADDING, RSA_PKCS1_PSS_SHA1_PADDING, RSA_PKCS1_PSS_SHA256_PADDING, RSA_PKCS1_PSS_SHA384_PADDING, RSA_PKCS1_PSS_SHA512_PADDING, RSA_NO_PADDING, RSA_PKCS1_ENCRYPT_PADDING, RSA_PKCS1_OAEP_PADDING, RSA_PKCS1_OAEP_MGF1_PADDING, RSA_PKCS1_OAEP_SHA1_PADDING, RSA_PKCS1_OAEP_SHA256_PADDING, RSA_PKCS1_OAEP_SHA384_PADDING, RSA_PKCS1_OAEP_SHA512_PADDING, RSA_PKCS1_PSS_PADDING, RSA_PKCS1_PSS_MGF1_PADDING, RSA_PKCS1_PSS_MGF1_SHA1_PADDING, RSA_PKCS1_PSS_MGF1_SHA256_PADDING, RSA_PKCS1_PSS_MGF1_SHA384_PADDING, RSA_PKCS1_PSS_MGF1_SHA512_PADDING, RSA_PKCS1_PSS_SHA1_PADDING, RSA_PKCS1_PSS_SHA256_PADDING, RSA_PKCS1_PSS_SHA384_PADDING, RSA_PKCS1_PSS_SHA512_PADDING, RSA_NO_PADDING, RSA_PKCS1_ENCRYPT_PADDING, RSA_PKCS1_OAEP_PADDING, RSA_PKCS1_OAEP_MGF1_PADDING, RSA_PKCS1_OAEP_SHA1_PADDING, RSA_PKCS1_OAEP_SHA256_PADDING, RSA_PKCS1_OAEP_SHA384_PADDING, RSA_PKCS1_OAEP_SHA512_PADDING, RSA_PKCS1_PSS_PADDING, RSA_PKCS1_PSS_MGF1_PADDING, RSA_PKCS1_PSS_MGF1_SHA1_PADDING, RSA_PKCS1_PSS_MGF1_SHA256_PADDING, RSA_PKCS1_PSS_MGF1_SHA384_PADDING, RSA_PKCS1_PSS_MGF1_SHA512_PADDING, RSA_PKCS1_PSS_SHA1_PADDING, RSA_PKCS1_PSS_SHA256_PADDING, RSA_PKCS1_PSS_SHA384_PADDING, RSA_PKCS1_PSS_SHA512_PADDING, RSA_NO_PADDING, RSA_PKCS1_ENCRYPT_PADDING, RSA_PKCS1_OAEP_PADDING, RSA_PKCS1_OAEP_MGF1_PADDING, RSA_PKCS1_OAEP_SHA1_PADDING, RSA_PKCS1_OAEP_SHA256_PADDING, RSA_PKCS1_OAEP_SHA384_PADDING, RSA_PKCS1_OAEP_SHA512_PADDING, RSA_PKCS1_PSS_PADDING, RSA_PKCS1_PSS_MGF1_PADDING, RSA_PKCS1_PSS_MGF1_SHA1_PADDING, RSA_PKCS1_PSS_MGF1_SHA256_PADDING, RSA_PKCS1_PSS_MGF1_SHA384_PADDING, RSA_PKCS1_PSS_MGF1_SHA512_PADDING, RSA_PKCS1_PSS_SHA1_PADDING, RSA_PKCS1_PSS_SHA256_PADDING, RSA_PKCS1_PSS_SHA384_PADDING, RSA_PKCS1_PSS_SHA512_PADDING, RSA_NO_PADDING, RSA_PKCS1_ENCRYPT_PADDING, RSA_PKCS1_OAEP_PADDING, RSA_PKCS1_OAEP_MGF1_PADDING, RSA_PKCS1_OAEP_SHA1_PADDING, RSA_PKCS1_OAEP_SHA256_PADDING, RSA_PKCS1_OAEP_SHA384_PADDING, RSA_PKCS1_OAEP_SHA512_PADDING, RSA_PKCS1_PSS_PADDING, RSA_PKCS1_PSS_MGF1_PADDING, RSA_PKCS1_PSS_MGF1_SHA1_PADDING, RSA_PKCS1_PSS_MGF1_SHA256_PADDING, RSA_PKCS1_PSS_MGF1_SHA384_PADDING, RSA_PKCS1_PSS_MGF1_SHA512_PADDING, RSA_PKCS1_PSS_SHA1_PADDING, RSA_PKCS1_PSS_SHA256_PADDING, RSA_PKCS1_PSS_SHA384_PADDING, RSA_PKCS1_PSS_SHA512_PADDING, RSA_NO_PADDING, RSA_PKCS1_ENCRYPT_PADDING, RSA_PKCS1_OAEP_PADDING, RSA_PKCS1_OAEP_MGF1_PADDING, RSA_PKCS1_OAEP_SHA1_PADDING, RSA_PKCS1_OAEP_SHA256_PADDING, RSA_PKCS1_OAEP_SHA384_PADDING, RSA_PKCS1_OAEP_SHA512_PADDING, RSA_PKCS1_PSS_PADDING, RSA_PKCS1_PSS_MGF1_PADDING, RSA_PKCS1_PSS_MGF1_SHA1_PADDING, RSA_PKCS1_PSS_MGF1_SHA256_PADDING, RSA_PKCS1_PSS_MGF1_SHA384_PADDING, RSA_PKCS1_PSS_MGF1_SHA512_PADDING, RSA_PKCS1_PSS_SHA1_PADDING, RSA_PKCS1_PSS_SHA256_PADDING, RSA_PKCS1_PSS_SHA384_PADDING, RSA_PKCS1_PSS_SHA512_PADDING, RSA_NO_PADDING, RSA_PKCS1_ENCRYPT_PADDING, RSA_PKCS1_OAEP_PADDING, RSA_PKCS1_OAEP_MGF1_PADDING, RSA_PKCS1_OAEP_SHA1_PADDING, RSA_PKCS1_OAEP_SHA256_PADDING, RSA_PKCS1_OAEP_SHA384_PADDING, RSA_PKCS1_OAEP_SHA512_PADDING, RSA_PKCS1_PSS_PADDING, RSA_PKCS1_PSS_MGF1_PADDING, RSA_PKCS1_PSS_MGF1_SHA1_PADDING, RSA_PKCS1_PSS_MGF1_SHA256_PADDING, RSA_PKCS1_PSS_MGF1_SHA384_PADDING, RSA_PKCS1_PSS_MGF1_SHA512_PADDING, RSA_PKCS1_PSS_SHA1_PADDING, RSA_PKCS1_PSS_SHA256_PADDING, RSA_PKCS1_PSS_SHA384_PADDING, RSA_PKCS1_PSS_SHA512_PADDING, RSA_NO_PADDING, RSA_PKCS1_ENCRYPT_PADDING, RSA_PKCS1_OAEP_PADDING, RSA_PKCS1_OAEP_MGF1_PADDING, RSA_PKCS1_OAEP_SHA1_PADDING, RSA_PKCS1_OAEP_SHA256_PADDING, RSA_PKCS1_OAEP_SHA384_PADDING, RSA_PKCS1_OAEP_SHA512_PADDING, RSA_PKCS1_PSS_PADDING, RSA_PKCS1_PSS_MGF1_PADDING, RSA_PKCS1_PSS_MGF1_SHA1_PADDING, RSA_PKCS1_PSS_MGF1_SHA256_PADDING, RSA_PKCS1_PSS_MGF1_SHA384_PADDING, RSA_PKCS1_PSS_MGF1_SHA512_PADDING, RSA_PKCS1_PSS_SHA1_PADDING, RSA_PKCS1
2025-08-16 10:04