Dies ist eine sehr kleine Demonstration, die die minimal erforderlichen Dinge für eine Chiffre in einem OpenSSL 3.0 -Anbietermodul zeigt.
Dieser Anbieter implementiert eine erweiterte Version der bekannten Vigenère -Chiffre, die den gesamten Bereich der Byte -Werte abdeckt, nicht nur alphabetische Zeichen. Eine Beschreibung dieser Chiffre sowie ihrer Geschichte finden Sie unter https://en.wikipedia.org/wiki/vigenère_cipher
Es versteht sich von selbst, dass diese Chiffre heutzutage nicht in einer realen Situation verwendet werden sollte, aber die Implementierung kann als Vorlage für andere Chiffre -Anbieter verwendet werden. Wenn Sie dies wirklich verwenden möchten, kehren Sie ins 16. Jahrhundert zurück
Eine detaillierte Benutzerdokumentation finden Sie in VigeneRe.md.
Um das Quell -Repository zu vervollständigen, müssen auch alle Git -Submodules auf dem neuesten Stand sein. Das erste Mal müssen sie auch initialisiert werden, wie folgt:
git submodule update --init
Das nächste Mal kann --init
übersprungen werden.
Aufbau dieses Anbieters erfordert CMAKE und eine GebäudetoolChain, die er unterstützt.
Einfache Konfiguration für eine Systeminstallation von OpenSSL 3:
cmake -S . -B _build
Wenn Sie OpenSSL 3 an einem anderen Ort installiert haben, machen Sie stattdessen Folgendes durch, wobei {path}
durch das Verzeichnis einer OpenSSL 3 -Installation ersetzt wurde:
cmake -DCMAKE_PREFIX_PATH={path} -S . -B _build
Um zu bauen, tun Sie dies:
cmake --build _build
Das Ergebnis ist _build/vigenere.so
oder _build/Debug/vigenere.dll
.
OpenSSL bietet eine Reihe von Möglichkeiten, um anzugeben, wo ein Modul gefunden werden kann:
Befehlszeilenoptionen für relevante openssl
-Unterbefehle. Insbesondere sollten -provider-path
und -provider
-Optionen kombiniert werden, um einen weiteren Weg hinzuzufügen, um nach Anbietermodulen zu suchen, und den Namen eines zu geladenen Anbieters.
$ 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)
Die Umgebungsvariable OPENSSL_MODULES
, die für jedes Programm funktioniert, das OpenSSLs libcrypto verlinkt.
$ 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)
Programmgesteuert, wenn Sie in Ihrem Programm tun möchten, was -provider-path
in openssl
-Unterbefehlungen tut.
Ref: OSSL_Provider (3)