これは、OpenSSL 3.0プロバイダーモジュールの暗号に必要な最小のものを示す非常に小さなデモです。
このプロバイダーは、アルファベットのある文字だけでなく、バイト値の全範囲をカバーする、よく知られているVigenèreCipherの拡張バージョンを実装しています。この暗号とその歴史の説明については、https://en.wikipedia.org/wiki/vigenère_cipherを参照してください。
この日と年齢では、この暗号は実際の状況では使用されるべきではありませんが、実装は他の暗号プロバイダーのテンプレートとして使用できます。これを実際に使用したい場合は、16世紀に戻ります
詳細なユーザードキュメントは、vigenere.mdで見つけることができます。
ソースリポジトリを完了するには、すべてのgitサブモジュールも最新の状態でなければなりません。初めて、次のように初期化する必要があります。
git submodule update --init
次回は、 --init
スキップできます。
このプロバイダーの構築には、サポートするCmakeとサポートする建物のツールチェーンが必要です。
OpenSSL 3のシステムインストール用のシンプルな構成:
cmake -S . -B _build
OpenSSL 3がどこか別の場所にインストールされている場合は、代わりに次のことを行い、 {path}
をOpenSSL 3インストールのディレクトリに置き換えます。
cmake -DCMAKE_PREFIX_PATH={path} -S . -B _build
構築するには、これを行います。
cmake --build _build
結果は_build/vigenere.so
または_build/Debug/vigenere.dll
になりました。
OpenSSLは、モジュールを見つけることができる場所を指定するいくつかの方法を提供します。
関連するopenssl
サブコマンドのコマンドラインオプション。具体的には、 -provider-path
および-provider
オプションを組み合わせて、プロバイダーモジュールを探すための別のパスと、ロードされるプロバイダーの名前を探す必要があります。
$ echo " The quick brown fox jumps over the lazy dog "
| openssl enc -provider-path _build -provider vigenere
-e -vigenere -K 0123456789ABCDEF0123456789ABCDEF
| od -tx1
0000000 55 8b aa 87 fa 20 36 52 6c 43 a7 d9 f8 22 3b 0f
0000020 67 92 bd 87 f3 20 3a 5f 74 43 b4 dd ee 1d ed 63
0000040 69 88 65 d3 ea 25 46 0f 65 92 ac 71
0000054
ref:openssl(1)
環境変数OPENSSL_MODULES
は、OpenSSLのlibcryptoをリンクするプログラムで機能します。
$ export OPENSSL_MODULES=_build
$ echo " The quick brown fox jumps over the lazy dog "
| openssl enc -provider vigenere -e -vigenere -K 0123456789ABCDEF0123456789ABCDEF
| od -tx1
0000000 55 8b aa 87 fa 20 36 52 6c 43 a7 d9 f8 22 3b 0f
0000020 67 92 bd 87 f3 20 3a 5f 74 43 b4 dd ee 1d ed 63
0000040 69 88 65 d3 ea 25 46 0f 65 92 ac 71
0000054
ref:openssl-env(7)
プログラムでは、プログラムで-provider-path
openssl
サブコマンドで行うことをしたい場合。
ref:ossl_provider(3)