应用程序升级到运行elixir 1.12.2,并使用OTP 24,我已经确认这些是运行的版本。
在运行某些测试时,我得到以下错误:
** (UndefinedFunctionError) function :crypto.block_encrypt/4 is undefined or private, use crypto:crypto_one_time/5, crypto:crypto_one_time_aead/6,7 or crypto:crypto_(dyn_iv)?_init + crypto:crypto_(dyn_iv)?_update + crypto:crypto_final instead我做的大多数谷歌搜索都建议将plug_crypto升级到1.2.2版本,这已经完成了。
block_encrypt/4函数是底层Erlang代码,在Elixir代码中调用block_encrypt/4的代码行是:
ExCrypto.encrypt(content_key, "", content_json)我为ExCrytpo找到了一个公关,它应该可以解决这个问题:https://github.com/ntrepid8/ex_crypto/pull/40
有人留下评论,询问是否需要将代码推送到hex.pm,并想知道是否该代码还没有发布到hex.pm?
发布于 2021-07-30 14:07:42
是的,似乎ExCrypto还没有发布包含该PR中的更改到十六进制的版本。最新版本on hex为0.10.0,于2019年2月20日发布。PR于2021年5月27日合并。
作为一种解决办法,您可以使用git存储库作为依赖项的来源,而不是十六进制:
{:ex_crypto, git: "https://github.com/ntrepid8/ex_crypto.git", branch: "master"}最好是固定到特定的提交,而不是主分支:
{:ex_crypto,
git: "https://github.com/ntrepid8/ex_crypto.git",
ref: "0915c274503f9fc6d6f5fab8c98467e7414cf8fc"}另一个(可能更好的)选择是,您可以通过更新代码以直接使用ExCrypto :crypto库来消除对Erlang的依赖。
https://stackoverflow.com/questions/68590320
复制相似问题