use EVP_EncryptFinal to Pad Encryption

Source code in Openssl
int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl)
 {
 int i,n,b,bl,ret;
 b=ctx->cipher->block_size;
 OPENSSL_assert(b <= sizeof ctx->buf);
 if (b == 1)
  {
  *outl=0;
  return 1;
  }
 bl=ctx->buf_len;
 if (ctx->flags & EVP_CIPH_NO_PADDING)
  {
  if(bl)
   {
   EVPerr(EVP_F_EVP_ENCRYPTFINAL,EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH);
   return 0;
   }
  *outl = 0;
  return 1;
  }
 n=b-bl;
 for (i=bl; i<b; i++)
  ctx->buf[i]=n;

 ret=ctx->cipher->do_cipher(ctx,out,ctx->buf,b);
 if(ret)
  *outl=b;
 return ret;
 }
廣告
本篇發表於 未分類。將永久鏈結加入書籤。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s