【UE5】Unreal C++でOpenSSLを使う【C++】

この記事は約2分で読めます。

Unreal EngineのC++を短縮して、”Unreal C++”という書き方をする人も多いらしい。なんかちょっとかっこいいので真似する。(なんか前にも同じことを言ったかもしれない気もするが)

pezed開発を中断した後もずっとunreal engineを使ってたんだが、BluprintプロジェクトにしてたせいもあってC++は使ってなかった。今日になってどうしてもOpenSSLを使いたくなったので、次のwebページを参考にしながら久々にC++を弄った。

Unreal C++でAES暗号化しPHPで復号するときにハマったこと - Qiita
Unreal Engine内のゲームのリザルト情報を暗号化し、サーバー上で復号する処理を書いてみました。 C++でのAES暗号化に関してはとにかく情報が少なく、まず暗号化の方式から勉強するハメになりました。 結論としては、AES-256-C...

上のサイトの人は生のAESルーチンを使ってるけど、EVPを使った方が楽なことを知ってたので、そうしてみようとしたところ少し嵌った。(AESのままでも途中までは同じことになったと思う)

まずは、プロジェクトBuild.csファイルの設定だが、これ自体は問題ない。

PublicDependencyModuleNames.AddRange(new string[] { “Core”, “CoreUObject”, “Engine”, “InputCore”, “EnhancedInput”, “OpenSSL” }); // openssl追加

問題はこの後で、一旦vs2022を閉じてuprojectファイルを右クリックして、Generate Visual Studio Project Filesをやって、vs2022プロジェクトファイルを書き直してやらないと、ちゃんとプロジェクトに反映されない。pezedでいくつかモジュールを追加したけど、これが必要だって覚えてなかった。

プロジェクトにちゃんと反映させてしまえば、インクルードファイルも長々書く必要がない。

#include ”ThirdParty/OpenSSL/1.1.1t/include/Win64/VS2015/openssl/evp.h” ←こんなに書かなくていい。

#include “openssl/evp.h” ←これでいい。

それとこれはEVPの問題になると思うが、次の宣言がエラーになる。

EVP_CIPHER_CTX ctx;

なんで?ってググったらちゃんと出てきた。

evp_cipher_ctx_st definition not installing · Issue #962 · openssl/openssl
Hi, I'm getting an error when compiling a simple app after compiling openssl through the git repo. error: invalid use of...

スタック上ではインスタンス化できないらしい。なので上のサイトにある通りに書き直す。

EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new();
….
EVP_CIPHER_CTX_free(ctx); 使い終わったら解放

コメント

タイトルとURLをコピーしました