-1
생성 된 RSA pubkey로 문자열을 암호화하는 데 문제가 있습니다. 이 키는 서명되지 않은 char 배열에 저장됩니다. 저는 여기에 현재RSA pubkey로 C 암호화 문자열
RSA *rsa = NULL;
BIO *key_bio;
static const int bit = 2048;
key_bio = BIO_new_mem_buf(testkey, -1);
if(key_bio == NULL){
printf("No key bio \n");
exit(1);
}
rsa = PEM_read_bio_PUBKEY(key_bio, NULL, NULL, NULL);
if(rsa == NULL){
fprintf(stderr, "Error loading RSA Public Key File.\n");
ERR_print_errors_fp(stderr);
exit(1);
}
// Alloc the encrypted buffer
e->enckey = calloc(1, 2048);
int res = RSA_public_encrypt(strlen((char*)e->key->key), e->key->key, e->enckey, rsa, RSA_PKCS1_PADDING);
if(res == -1){
printf("Failed to encrypt AES key \n");
printf("Error: strerror(errno)\n");
}
그러나, 문제가 해결되지 않는 암호화를 수행하는이 코드를 작성한 해당 키
char *testkey = "-----BEGIN RSA PUBLIC KEY-----\n"
"MIIBCgKCAQEA3InRLxdx25R6eA4PyXcYzKyFiJULS3ypqlETztAW488XkEM263vJ\n"
"SY5xpfwph9thcsjYUI3H60qxaTRVhNxbzbsG0ELkEudm4cLMn2oVpphT4cB3zx6V\n"
"az1cuzIfmL34M8YiRQw6MvdaDJS34y15dXDm0BSXF7sanZaYrHvu84j5mQVK0OWq\n"
"kvpVs+J55xul/IQsSEWr94HjPupdDYzGXsEiQ7p5cNrvKgjGKqKV177EYROVVgVp\n"
"gAWm0G6aDrfDLKqsXo8RXj4dyyuZqoL2e7Fa46Gz4I+tb2SWkEwLGpqBe/CUDzDh\n"
"9aLhaTijDQhcaR5+u88XNbarckKU96wiiQIDAQAB\n"
"-----END RSA PUBLIC KEY-----\0";
의 예입니다. 키의 형식에 관한 것 같지만 변환 방법을 알아 내지 못하고 RSA 구조체를 사용하여 암호화를 수행합니다.
아이디어가 있으십니까?
"이 작동하지 않음"이란 무엇을 의미합니까? 그것은 컴파일합니까? 실행됩니까? 오류 메시지가 나타 납니까? 출력을 받고 있습니까? 예상되는 행동은 무엇입니까? (또한 'e'가 선언 된 곳은 무엇입니까?이 코드가 누락 된 이유는 무엇입니까?) –
E는 부적합합니다. 내가 암호화 할 데이터가있는 구조체. 또한 암호화 된 데이터에 대한 버퍼가 저장됩니다. RSA = NULL이므로 프로그램이 종료되고 다음과 같은 오류를 인쇄합니다. 공개 키가 필요합니다. E가 다른 함수에서이 함수로 전달됩니다. –
[c를 사용하는 [rsa encryption decryption]의 가능한 복제본 (http://stackoverflow.com/questions/15652816/rsa-encryption-decryption-using-c) –