(OpenSSL)AES256-CBCで暗号化処理が出来ない
解決したいこと
openssl 3.0.8を使用してAES256(cbc)で暗号化を行いたいのですが、
暗号化関数(EVP_EncryptUpdate)にて、空(レングス0)となります。
EVP_EncryptInit_ex実行後、
暗号コンテキスト(ctx)にキー(key)、初期ベクトル(iv)が入っていないのが、原因でしょうか。
該当するソースコード
環境
visual studio 2019 community
言語
C++
ビルド
64bit
BYTE byData[8] = { 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31 }; // 暗号化したいデータ
unsigned char ckey[] = "12345678901234567890123456789012"; // キー
unsigned char civ[] = "hogehogehogehoge"; // 初期ベクトル
int len = 0;
EVP_CIPHER_CTX* ctx = EVP_CIPHER_CTX_new();
EVP_CIPHER_CTX_init(ctx);
// EVP_EncryptInit_ex は、暗号コンテキスト ctx を暗号関数EVP_aes_256_cbc、
// 暗号エンジン impl で暗号化用に初期化する
// impl が NULL の場合,デフォルトの実装が用いられる
EVP_EncryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, ckey, civ);
int c_len = 8 + EVP_MAX_BLOCK_LENGTH;
unsigned char* ciphertext = new unsigned char[c_len];
memset(ciphertext, 0x00, c_len);
// in から始まる inl バイトのデータを暗号化し,out に出力する
EVP_EncryptUpdate(ctx, ciphertext, &len, byData, datalen);
// 暗号コンテキスト ctx を解放する.暗号処理終了後
// 重要な情報がメモリ上に残らないようにこの関数を呼ばなければならない
EVP_CIPHER_CTX_cleanup(ctx);
自分で試したこと
ここに問題・エラーに対して試したことを記載してください。