我正在使用openssl並試圖解密使用RSA_SSLV23_PADDING
加密的數據。代碼如下:解密與RSA_SSLV23_PADDING不起作用
BIO *pBPK=NULL;
RSA *pPrivKey;
pBPK = BIO_new_mem_buf ((void*) strKey, -1);
pPrivKey = PEM_read_bio_RSAPrivateKey (pBPK, NULL, NULL, NULL);
int flen = RSA_size (pPrivKey);
unsigned char* from = (unsigned char*)strData;
int maxSize = RSA_size (pPrivKey);
unsigned char* to = new unsigned char[maxSize];
int res = RSA_private_decrypt (flen, from, to, pPrivKey, RSA_SSLV23_PADDING);
但我總是得到res
爲-1
。當我使用RSA_PKCS1_PADDING
或RSA_PKCS1_OAEP_PADDING
時,它工作正常。
您如何知道數據已用RSA_SSLV23_PADDING加密?你是什麼意思_「當我使用RSA_PKCS1_PADDING或RSA_PKCS1_OAEP_PADDING時,它工作正常。」_?什麼是「工作正常」_? –
我實際上正在創建一個完成所有這些加密解密的框架。我以填充方案作爲參數並使用它。當我提供RSA_PKCS1_PADDING或RSA_PKCS1_OAEP_PADDING時,它工作正常,但當我提供RSA_SSLV23_PADDING時,解密失敗。在加密期間,RSA_public_encrypt()不會返回-1,而是長度。所以我假設它正在工作。 – abhithakur88
「正常工作」表示我能夠從加密文本中檢索原始數據 – abhithakur88