您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ EVP_CIPHER_CTX_block_size函数代码示例

51自学网 2021-06-01 20:34:35
  C++
这篇教程C++ EVP_CIPHER_CTX_block_size函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中EVP_CIPHER_CTX_block_size函数的典型用法代码示例。如果您正苦于以下问题:C++ EVP_CIPHER_CTX_block_size函数的具体用法?C++ EVP_CIPHER_CTX_block_size怎么用?C++ EVP_CIPHER_CTX_block_size使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了EVP_CIPHER_CTX_block_size函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: encrypt_buf

void encrypt_buf(struct encryption_ctx *ctx, char *buf, int *len) {    if (_method == EncryptionTable) {        table_encrypt(buf, *len);    } else {        if (ctx->status == STATUS_EMPTY) {            int iv_len = encryption_iv_len[_method];            unsigned char iv[EVP_MAX_IV_LENGTH];            memset(iv, 0, iv_len);            RAND_bytes(iv, iv_len);            init_cipher(ctx, iv, iv_len, 1);            int out_len = *len + EVP_CIPHER_CTX_block_size(ctx->ctx);            unsigned char *cipher_text = malloc(out_len);            EVP_CipherUpdate(ctx->ctx, cipher_text, &out_len, buf, *len);            memcpy(buf, iv, iv_len);            memcpy(buf + iv_len, cipher_text, out_len);            *len = iv_len + out_len;            free(cipher_text);        } else {            int out_len = *len + EVP_CIPHER_CTX_block_size(ctx->ctx);            unsigned char *cipher_text = malloc(out_len);            EVP_CipherUpdate(ctx->ctx, cipher_text, &out_len, buf, *len);            memcpy(buf, cipher_text, out_len);            *len = out_len;            free(cipher_text);        }    }}
开发者ID:hynnet,项目名称:ShadowWeb,代码行数:27,


示例2: soter_sym_aead_decrypt_update

soter_status_t soter_sym_aead_decrypt_update(soter_sym_ctx_t *ctx, const void* cipher_data,  const size_t cipher_data_length, void* plain_data, size_t* plain_data_length){  if(plain_data==NULL || (*plain_data_length)<(cipher_data_length+EVP_CIPHER_CTX_block_size(&(ctx->evp_sym_ctx))-1)){    (*plain_data_length)=cipher_data_length+EVP_CIPHER_CTX_block_size(&(ctx->evp_sym_ctx))-1;    return SOTER_BUFFER_TOO_SMALL;  }  return soter_sym_ctx_update(ctx, cipher_data,  cipher_data_length, plain_data, plain_data_length, false);}
开发者ID:josephwinston,项目名称:themis,代码行数:7,


示例3: CMAC_Init

int CMAC_Init(CMAC_CTX *ctx, const void *key, size_t keylen,              const EVP_CIPHER *cipher, ENGINE *impl){    static unsigned char zero_iv[EVP_MAX_BLOCK_LENGTH];#ifdef OPENSSL_FIPS    if (FIPS_mode()) {        /* If we have an ENGINE need to allow non FIPS */        if ((impl || ctx->cctx.engine)            && !(ctx->cctx.flags & EVP_CIPH_FLAG_NON_FIPS_ALLOW)) {            EVPerr(EVP_F_CMAC_INIT, EVP_R_DISABLED_FOR_FIPS);            return 0;        }        /*         * Other algorithm blocking will be done in FIPS_cmac_init, via         * FIPS_cipherinit().         */        if (!impl && !ctx->cctx.engine)            return FIPS_cmac_init(ctx, key, keylen, cipher, NULL);    }#endif    /* All zeros means restart */    if (!key && !cipher && !impl && keylen == 0) {        /* Not initialised */        if (ctx->nlast_block == -1)            return 0;        if (!EVP_EncryptInit_ex(&ctx->cctx, NULL, NULL, NULL, zero_iv))            return 0;        sgx_memset(ctx->tbl, 0, EVP_CIPHER_CTX_block_size(&ctx->cctx));        ctx->nlast_block = 0;        return 1;    }    /* Initialiase context */    if (cipher && !EVP_EncryptInit_ex(&ctx->cctx, cipher, impl, NULL, NULL))        return 0;    /* Non-NULL key means initialisation complete */    if (key) {        int bl;        if (!EVP_CIPHER_CTX_cipher(&ctx->cctx))            return 0;        if (!EVP_CIPHER_CTX_set_key_length(&ctx->cctx, keylen))            return 0;        if (!EVP_EncryptInit_ex(&ctx->cctx, NULL, NULL, key, zero_iv))            return 0;        bl = EVP_CIPHER_CTX_block_size(&ctx->cctx);        if (!EVP_Cipher(&ctx->cctx, ctx->tbl, zero_iv, bl))            return 0;        make_kn(ctx->k1, ctx->tbl, bl);        make_kn(ctx->k2, ctx->k1, bl);        OPENSSL_cleanse(ctx->tbl, bl);        /* Reset context again ready for first data block */        if (!EVP_EncryptInit_ex(&ctx->cctx, NULL, NULL, NULL, zero_iv))            return 0;        /* Zero tbl so resume works */        sgx_memset(ctx->tbl, 0, bl);        ctx->nlast_block = 0;    }    return 1;}
开发者ID:johnjohnsp1,项目名称:opensgx,代码行数:58,


万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。