2

我正在为 F5 Big-Ip v. 11.x 编写 iRule。我对 CRYPTO 库有疑问。

当我尝试以这种方式解密字符串时

set  foo [CRYPTO::decrypt -alg rc4 -keyhex $key $to_decrypt]

其中 $key 是十六进制格式的字符串, $to_decrypt 是加密的字符串。

我收到一个错误:

tmm err tmm[7107]: 01220001:3: TCL error: /Common/testirule - 缺少必需的参数

在这里您可以找到文档:https ://devcentral.f5.com/wiki/iRules.CRYPTO__decrypt.ashx

我无法理解缺少哪个参数,您能帮帮我吗?提前致谢!

编辑:我在这里添加来自文档的片段:

CRYPTO::decrypt [-alg <>] [-ctx <> [-final]] [-key[hex] <>] [-iv[hex] <>] []

根据几个参数解密数据

alg - 算法。来自给定列表的 ASCII 字符串(见下文) 拼写是小写的,iRule 将因列表中没有的任何内容而失败。在 ctx 模式下,alg 必须在第一个 CRYPTO::command 中给出,并且不能修改。 ctx- context 是 Tcl 变量的名称,只能在 CRYPTO 命令中生成和使用。注意:尝试获取或设置 ctx 变量的值将失败。当 CTX 变量首次在 iRule 中使用时,将根据给定的参数(alg、key、iv 等)生成一个 tcl 对象。给定的 CTX 变量只能用于一个 CRYPTO:: 命令。如果 CTX 被用于不同目的,iRule CRYPTO:: 命令将失败。“–final”必须用于同一 CTX 变量的最后一个 CRYPTO:: 命令以完成 CRYPTO:: 命令。使用“-final”后,CTX 变量将被释放,相同的 ctx 变量名可以重复使用。当 CTX 变量中已经存储了一个键和一个 IV 值时,该值只能在 CRYPTO 命令真正开始之前更新,即在给出任何数据之前。- 键(二进制数据)。密钥长度由使用的算法确定。可以由 CRYPTO::keygen keyhex生成- 密钥作为十六进制数据。密钥长度由使用的算法确定。可以通过 CRYPTO::keygen iv - 初始化向量(二进制数据)生成。长度由使用的 alg 决定。可以由 CRYPTO::keygen ivhex生成- 初始化向量作为十六进制数据。长度由使用的 alg 决定。可以通过 CRYPTO::keygen 生成

4

1 回答 1

1

是可选的-iv,因为您可以创建一个包含初始化向量的上下文并将其传递给 with -ctx。TCL 命令文档没有很好的方式来表明这种情况:-iv并且-key是必需的或是-ctx必需的。

于 2013-03-12T18:14:15.090 回答