void decrypt(AES_KEY &ctx, decrypt_output_type &dst, const decrypt_input_type &src, iv_type &iv) { // 아직 bits값에 대한 것은 모호함. 조사 필요 int bits = 1; // 패딩이 없어도 된다. AES_cfb8_encrypt(&src[0], &dst[0], src.size(), &ctx, &iv[0], &bits, AES_DECRYPT); }
static int aes_do_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int size) { AES_KEY *k = ctx->cipher_data; if (EVP_CIPHER_CTX_mode(ctx) == EVP_CIPH_CFB8_MODE) AES_cfb8_encrypt(in, out, size, k, ctx->iv, ctx->encrypt); else AES_cbc_encrypt(in, out, size, k, ctx->iv, ctx->encrypt); return 1; }
virtual void decrypt(const unsigned char* in, unsigned char* out, std::size_t length) { assert(in && out); AES_cfb8_encrypt(in, out, length, &this->aes_ctx, this->ivec, &this->num, AES_DECRYPT); }