这是一个非常小的演示,它显示了OpenSSL 3.0提供商模块中密码的最低要求。
该提供商实现了众所周知的Vigenère密码的扩展版本,涵盖了整个字节值范围,而不仅仅是字母字符。有关此密码及其历史的描述,请参见https://en.wikipedia.org/wiki/vigenère_cipher
毋庸置疑,在当今时代,该密码不应在真实情况下使用,但是该实现可以用作其他密码提供商开始的模板。如果您想真实地使用它,请回到16世纪
详细的用户文档可以在Vigenere.md中找到。
为了完成源存储库,所有GIT子模型也必须是最新的。第一次,它们也需要初始化,如下所示:
git submodule update --init
下次,可以--init
。
构建此提供商需要CMAKE和它支持的建筑工具链。
简单配置,用于系统安装OpenSSL 3:
cmake -S . -B _build
如果已安装了其他位置,请执行以下操作,以{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
,可用于链接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
参考:Openssl-env(7)
以编程方式,如果您想在程序中执行以下操作-provider-path
在openssl
子命令中所做的事情。
参考:ossl_provider(3)