Это очень маленькая демонстрация, которая показывает минимальные необходимые вещи для шифра в модуле поставщика OpenSSL 3.0.
Этот поставщик реализует расширенную версию хорошо известного Vigenère Cipher, охватывающего весь диапазон значений байтов, а не только алфавитные символы. Описание этого шифра, а также его историю см. 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
Ссылка: OpenSSL (1)
Переменная среда OPENSSL_MODULES
, которая работает для любой программы, которая связывает Libcrypto OpenSsl.
$ 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
Ссылка: openssl-env (7)
Программно, если вы хотите сделать в своей программе, что делает -provider-path
в подкомандах openssl
.
Ссылка: ossl_provider (3)