<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      ed557

      學習筆記

      openssl EVP_CIPHER_CTX_set_padding 只支持 pkcs7/pkcs5

      openssl中padding的一個坑,現在在openssl里面AES的padding事實上只支持pkcs7/pkcs5這一種padding模式。

      今天被錯誤的資料誤導了,使用EVP接口實現對稱加密的時候有個EVP_CIPHER_CTX_set_padding()函數,看上去能給加密上下文ctx設置不同的padding模式。

      int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *c, int pad);
      

      但是實際上在現在的版本中它只能把默認的pkcs7/pkcs5模式改成nopadding模式, 第二個pad參數只能填0, 而不是openssl中的那幾個PADDING的枚舉,在changes.md里面有介紹

       * New function EVP_CIPHER_CTX_set_padding() this is used to
         disable standard block padding (aka PKCS#5 padding) in the EVP
         API, which was previously mandatory. This means that the data is
         not padded in any way and so the total length much be a multiple
         of the block size, otherwise an error occurs.
      
         *Steve Henson*
      

      openssl的EVP接口中有五個padding模式的枚舉,在evp.h里面:

      /* Padding modes */
      #define EVP_PADDING_PKCS7       1
      #define EVP_PADDING_ISO7816_4   2
      #define EVP_PADDING_ANSI923     3
      #define EVP_PADDING_ISO10126    4
      #define EVP_PADDING_ZERO        5
      

      EVP_PADDING_ISO7816_4、EVP_PADDING_ANSI923、EVP_PADDING_ISO10126 現在都被廢棄了。
      ZeroPadding有些缺陷,如果都用0x00填充,那如果消息的最后一個字節也是00,那解密的時候就無法區分明文和padding了。

      看evp_enc.c里面的實現就知道,EVP_CIPHER_CTX_set_padding這里只區分了pad是不是0,set成0就是nopadding,set成上面5個padding枚舉的任何一個其實用的都是EVP_PADDING_PKCS7。

      int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *ctx, int pad)
      {
          int ok;
          OSSL_PARAM params[2] = { OSSL_PARAM_END, OSSL_PARAM_END };
          unsigned int pd = pad;
      
          if (pad)
              ctx->flags &= ~EVP_CIPH_NO_PADDING;
          else
              ctx->flags |= EVP_CIPH_NO_PADDING;
      
          if (ctx->cipher != NULL && ctx->cipher->prov == NULL)
              return 1;
          params[0] = OSSL_PARAM_construct_uint(OSSL_CIPHER_PARAM_PADDING, &pd);
          ok = evp_do_ciph_ctx_setparams(ctx->cipher, ctx->algctx, params);
      
          return ok != 0;
      }
      

      其他padding模式openssl是不支持了,如果實際有需要自己給消息做好padding,然后再用EVP_CIPHER_CTX_set_padding把ctx設置成nopadding就好了。

      tags: openssl EVP_CIPHER_CTX_set_padding evp接口 padding 對稱加密 aes

      posted on 2022-02-05 21:19  ed557  閱讀(2328)  評論(0)    收藏  舉報

      導航

      主站蜘蛛池模板: 久热中文字幕在线精品观| 男人用嘴添女人私密视频| 久久精品人妻无码一区二区三区| 欧美不卡无线在线一二三区观| 国产成人精品亚洲午夜| 午夜高清福利在线观看| 亚洲精品有码在线观看| 国产对白老熟女正在播放| 欧美三级a做爰在线观看 | 40岁大乳的熟妇在线观看| 成在线人视频免费视频| 美女自卫慰黄网站| 熟女熟妇伦av网站| 亚洲色成人网站www永久四虎| 亚洲欧美精品一中文字幕| 诱人的老师hd中文字幕| 布尔津县| 狠狠噜天天噜日日噜无码| 久久亚洲精品无码播放| 亚洲国产精品综合久久20| 人人爽人人爽人人片av东京热 | 日本欧美大码a在线观看| 国产一区二区内射最近更新| 久久精品国产亚洲av天海翼 | 国产一区在线播放av| 国产精品久久毛片| 99久久免费只有精品国产| 九九在线精品国产| 日本亚洲一区二区精品久久| 超碰人人超碰人人| 她也色tayese在线视频| 亚洲乱妇老熟女爽到高潮的片| 国产又色又爽又黄的网站免费| 亚洲中文字幕无码av永久| 成人一区二区不卡国产| 国产国产久热这里只有精品| 爱性久久久久久久久| 欧美色欧美亚洲另类二区| 国产毛片子一区二区三区| 亚洲一区二区精品偷拍| 夜夜爽妓女8888888视频|