title: RSA_public_encrypt giving garbage output in output buffer
body: <p>Below is my updated code. which works fine for encrypting but fails for decryption.
  i don't want padding and hence i am using no padding which also ensures that the output of encryption will be same for each run.</p>
  
  <pre><code>#include &lt;string.h&gt;
  #include &lt;stdio.h&gt;
  #include &lt;unistd.h&gt;
  #include &lt;crypt.h&gt;
  #include &lt;stdlib.h&gt;
  #include &lt;openssl/rsa.h&gt;
  #include &lt;openssl/aes.h&gt;
  #include &lt;openssl/opensslconf.h&gt;
  #include &lt;openssl/engine.h&gt;
  #include &lt;openssl/pem.h&gt;
  #include &lt;openssl/rc4.h&gt;
  #include &lt;errno.h&gt;
  
  int main(void)
  {
          //modulus in format char hex;
          char key[] = "dsfasdfsdfc58553eaa0e204e72b3e64d304c87192507926cb45062ee21d0ebef1bbf79d880d1f3e03f95b2264qwerewrwerw5b577226f9a9212b961209c6b85e9ed72adee43c387c8a9b7c1d74d018a03c498b09a84sadfsdfsdfsdfsadfasf2342f133d7";
  
          RSA * pubkey = RSA_new();
  
          BIGNUM * modul = NULL;
          BIGNUM * expon = NULL;
  
          //if(modul==NULL || expon==NULL || pubkey==NULL)
          //      printf("modul or expon or rsa could not be created\n");
  
  
          int len=BN_hex2bn(&amp;modul, (const char *) key);
  
          printf("modul len = %d \n",len);
          printf("expon len =%d \n",BN_hex2bn(&amp;expon, (const char *)"11"));
  
          printf("N KEY: [%s]\n",BN_bn2hex(modul));
          printf("E KEY: [%s]\n",BN_bn2hex(expon));
  
          pubkey-&gt;n = modul;
          pubkey-&gt;e = expon;
          pubkey-&gt;iqmp = NULL;
          pubkey-&gt;d = NULL;
          pubkey-&gt;p = NULL;
          pubkey-&gt;q = NULL;
          pubkey-&gt;dmp1=NULL;
          pubkey-&gt;dmq1=NULL;
  
          int size=RSA_size(pubkey);
          int size1;
          char text[size];
          char *encryptedText=(char*)malloc(size);
          char *decryptedText=(char*)malloc(size);
          int ret;
          char buf[100];
  
          memset(encryptedText,'\0',sizeof(encryptedText));
  
          strcpy(text,"4200000000000000|01|2012|121|V|122002-1111111111-NA");
  
          printf("size = [%d] strlen(text) = [%d] destText = [%s]\n",size,strlen(text),encryptedText);
  
  //      srand(time(NULL));      //seeding random number generator
  
          if((size1=RSA_public_encrypt(size,(const unsigned char *)text,(unsigned char *)encryptedText,pubkey,RSA_NO_PADDING))&lt;0)
          {
                  printf("ERRO encrypt\n");
                  printf("errno : [%d]\n",errno);
                  ERR_error_string(errno, buf);
                  printf("size1 =%d errno %d\n",size1,errno);
                  printf("ERR STR [%s]\n",buf);
          }
          else
          {
                  printf("SUCCESSFULLY encrypted\n");
                  printf("bytes converted [%d]\n",size1);
                  printf("ENC:: size [%d] string [%s]\n",strlen(encryptedText),encryptedText);
          }
   memset(decryptedText,'\0',sizeof(decryptedText));
  
          //      printf("size = [%d] encryptedText = [%s] decryptedText = [%s]\n",size,encryptedText,decryptedText);
  
                  if((size=RSA_private_decrypt(size1,(unsigned char *)encryptedText,(unsigned char *)decryptedText,pubkey,RSA_NO_PADDING))&lt;0)
                  {
                  printf("ERRO encrypt\n");
                  printf("errno : [%d]\n",errno);
                  ERR_error_string(errno, buf);
                  printf("ERR STR [%s]\n",buf);
                  }
                  else
                  {
                  printf("SUCCESSFULLY decrypted\n");
                  printf("bytes converted [%d]\n",size1);
                  printf("DCRYPTED:: [%s]\n",decryptedText);
                  }
  
          //      BN_free(expon);
          //      BN_free(modul);
          //      if(pubkey)
  
          free(encryptedText);
          free(decryptedText);
          RSA_free(pubkey);
  
          return 0;
  }
  </code></pre>