最近需要做一些关于RSA加密的算法问题,从服务器返回的公钥与一些参数值进行公钥加密已知 e 和 公钥 strPublic ;代码大致片段为:BIGNUM *bnn,*bne;int nRet = BN_hex2bn(&bnn,strPublic );  //公钥 已知公钥每次都相同unsigned long e = 0x10001; 
nRet = BN_set_word(bne, e);      //eRSA *pRsa = RSA_new();
  pRsa->n = bnn;
  pRsa->e = bne;
        pRsa->d = NULL;flen =  RSA_size(pRsa); // RSA密钥长度strTemp.Format(_T("%s\t%s\n%s"),strSvcTime,strNonce,_T("abcedf")); //strSvcTime 与 strNonce 是服务器返回的两个参数 并且这是服务器js的密码拼接方法strPwd = strTemp;nRet =  RSA_public_encrypt(flen-11, pszPwd, encData, pRsa,  RSA_PKCS1_PADDING);   // pszPwd 为需要加密的源字符串, 采用PKCS1填充所以flen需要-11;可是这加密后的结果对服务器进行post后总是返回密码错误,如果使用服务器的js 进行加密则可通过验证以下为服务器的主要的加密过程 if ((me.loginType & rsa) && me.servertime && sinaSSOEncoder && sinaSSOEncoder.RSAKey) {
          request["servertime"] = me.servertime;
          request["nonce"] = me.nonce;
          request["pwencode"] = "rsa2";
          request["rsakv"] = me.rsakv;
          var RSAKey = new sinaSSOEncoder.RSAKey();
          RSAKey.setPublic(me.rsaPubkey, '10001'); //公钥 与 e参数
          password = RSAKey.encrypt([me.servertime, me.nonce].join("\t") + "\n" + password);
      } //这是js 的RSA加密过程
function RSAEncrypt(text) {
    var m = pkcs1pad2(text,(this.n.bitLength()+7)>>3); //经验证这是标准的 pkcs1填充
    if(m == null) return null;
    var c = this.doPublic(m);
    if(c == null) return null;
    var h = c.toString(16);
    if((h.length & 1) == 0) return h; else return "0" + h;
  }
请问 这是什么原因导致 OPENSSL的 RSA 加密 通不过服务器验证的问题呢 ?