OpenSSL 암호화 라이브러리를 사용하려고하는데, 내가 본 모든 예에서 중요한 부분 인 호출에서 충돌이 발생합니다. 여기가 최대 설정되어 방법은 다음과 같습니다왜 RSA_size가 충돌합니까?
BIO* bp = BIO_new_mem_buf(_publicKey, -1); // Create a new memory buffer BIO.
RSA* pubKey = PEM_read_bio_RSA_PUBKEY(bp, 0, 0, 0); // And read the RSA key from it.
unsigned char encryptedRandKey[RSA_size(pubKey)];
BIO_free(bp);
_publicKey
합니다 (-----BEGIN XXX-----
등 포함) PEM 형식의 RSA 키를 포함하는 null로 끝나는 문자열입니다. RSA_size
에서 액세스 권한이 잘못되어 충돌합니다.
BIO_free
을 제거해도 상관 없습니다.
아이디어가 있으십니까? 감사!
Duh. 명백한 것에 대한 포인터 주셔서 감사합니다! _publicKey가 합법적이므로 문제는 현재 문제입니다. 내가 볼 수있는 유일한 것은 개조가 어떻게 든 제거되었다는 것입니다. 모든 것은 XML에서 데이터베이스로 돌아오고, 그 요소의 XML 덤프는 콘솔에 ----- BEGIN 등의 개행을 표시합니다. 그러나 _publicKey의 printf에는 개행 문자가없는 것 같습니다. – Oscar
@Oscar - 예, OpenSSL은 PEM 인코딩에서 새로운 라인을 필요로합니다. [OpenSSL에서 공개 키/개인 키를 설정할 수 없음] (http://stackoverflow.com/a/29929327/608639) 및 해답에 대한 설명을 참조하십시오. (그리고 낡은 실을 파헤쳐서 미안하다.) – jww
해를 끼치 지 마십시오. JWW에게 감사드립니다. – Oscar