Encryption and decryption error 0x0407106B using OpenSSL

后端 未结 2 659
予麋鹿
予麋鹿 2021-01-02 18:07

I\'m writing a routine in C that reads a base64 string with the public key and proceeds to encrypt a string. I also test the same string\'s decryption but I\'m getting error

2条回答
  •  [愿得一人]
    2021-01-02 18:33

    The problem is that you're trying to decrypt the base64 encoded result. You should try to decrypt the result of the encryption.

    That is, instead of:

    int resultDecrypt = RSA_private_decrypt( RSA_size(privKey), retencrypted, decrypted, privKey, PADDING);
    

    You should call:

    int resultDecrypt = RSA_private_decrypt( RSA_size(privKey), encrypted, decrypted, privKey, PADDING);
    

    Also, there is a problem in the encryption call:

    int resultEncrypt = RSA_public_encrypt(PADDING, str, encrypted, pubKey, PADDING);
    

    Why are you passing PADDING as flen? This should be the length of the string (i.e. 4 or 5, depending on whether you want to encrypt the null character).

    If you want to write the encrypted string as ASCII (encoded using base64), that's fine. But you have to decode it back before you decrypt it.

提交回复
热议问题