对文本执行的复杂操作
除了简单的字符串匹配之外,您还可以配置检查字符串长度和文本块中的模式而不是特定字符串的表达式。
对于任何基于文本的操作,请注意以下几点:
- 对于任何需要字符串参数的操作,字符串不能超过 255 个字符。
- 在表达式中指定字符串时,可以包含空格。
对字符串长度的操作
以下操作按字符数提取字符串。
字符计数操作 | 说明 |
---|---|
<text>.TRUNCATE(<count>) |
按 <count> 中的字符数截断目标末尾后返回一个字符串。如果整个字符串小于 <count> ,则不返回任何内容。 |
<text>.TRUNCATE(<character> , <count> ) |
按 <count> 中指定的字符数截断 <character> 后面的文本后返回一个字符串。 |
<text>.PREFIX(<character> , <count> ) |
选择目标中最多出现 <count> 次的 <character> 的最长前缀。 |
<text>.SUFFIX(<character> , <count> ) |
选择目标中最多出现 <count> 次的 <character> 的最长后缀。例如,请注意以下响应正文:peninsula 。以下表达式返回的值为 sula: http.res.body(100).suffix('n',0) 。以下表达式返回 insula: http.res.body(100).suffix('n',1) 。以下表达式返回的值为 peninsula: http.res.body(100).suffix('n',2) 。以下表达式返回的值为 peninsula: http.res.body(100).suffix('n',3) 。 |
<text>.SUBSTR(<starting_offset>, <length> ) |
从目标对象中选择一个包含<length> 字符数的字符串。在 <starting_offset> 之后开始提取字符串。如果偏移后的字符数少于 <length> 参数的值,请选择所有剩余的字符。 |
<text>.SKIP(<character>, <count>) |
跳过最多出现 <count> 次的 <character> 最长前缀后,从目标中选择一个字符串。 |
对字符串的一部分进行操作
请参阅 字符串操作表 ,了解如何使用其中一个操作来提取较大字符串的子集。
用于比较两个字符串的字母数字顺序的操作
COMPARE 操作检查两个不同字符串的第一个不匹配字符。此操作基于词典顺序,这是在字典中对术语进行排序时使用的方法。
此操作返回比较字符串中第一个不匹配字符的 ASCII 值之间的算术差值。以下区别是示例:
- “abc”和“和”之间的区别为 -1(基于第三对字符比较)。
- “@”和“abc”之间的区别为 -33。
- “1”和“abc”之间的区别为 -47。
以下是 COMPARE 操作的语法。
<text>.COMPARE(<string>)
从表示文本的字节字符串中提取整数
请参阅 整数提取表 ,了解如何将表示文本的字符串视为字节序列,从序列中提取 8 位、16 位或 32 位,然后将提取的位转换为整数。
将文本转换为散列值
您可以使用哈希函数将文本字符串转换为哈希值。作为操作的结果,此函数返回一个 31 位正整数。以下是表达式的格式:
<text>.HASH
此函数忽略大小写和空格。例如,在操作之后,两个字符串 Ab c 和 bc 将产生相同的哈希值。
通过应用 Base64 编码算法对文本进行编码和解码
以下两个函数通过应用 Base64 编码算法对文本字符串进行编码和解码
功能 | 说明 |
---|---|
text.B64ENCODE | 通过应用 Base64 编码算法对文本字符串(由文本指定)进行编码。 |
text.B64DECODE | 通过应用 Base64 解码算法对 Base64 编码的字符串(由文本指定)进行解码。如果文本不是 B64 编码格式,则该操作将引发 UNDEF。 |
使用 EXTEXT 函数在重写操作中优化搜索
EXTEXT 函数用于指定模式或模式集并针对 HTTP 数据包主体的重写操作。找到模式匹配后,EXENDE 函数将搜索范围扩展到匹配字符串两侧的预定义字节数。然后,可以使用正则表达式对此扩展区域中的匹配项执行重写操作。与仅使用正则表达式评估整个 HTTP 主体的重写操作相比,使用 EXTEND 函数配置的重写操作执行重写的速度更快。
EXTEXT 函数的格式为 EXTEXT (m, n),其中 m 和 n 分别是在匹配模式之前和之后扩展搜索范围的字节数。找到匹配项后,新的搜索范围包括紧接在匹配字符串之前的 m 个字节、字符串本身和字符串后面的 n 个字节。然后可以使用正则表达式对这个新字符串的一部分执行重写操作。
只有在使用 EXNEXT 函数的重写操作满足以下要求时,才能使用该函数:
- 搜索是通过使用模式或模式集(而不是正则表达式)执行的
- 重写操作仅评估 HTTP 数据包的正文。
此外,EXEXT 函数只能与以下类型的重写操作一起使用:
- replace_all
- insert_after_all
- delete_all
- insert_before_all
例如,您可能想要删除正文前 1000 个字节中的所有“http://exampleurl.com/”和“http://exampleurl.au/”实例。为此,您可以配置重写操作来搜索字符串 exampleurl 的所有实例,在找到匹配项时扩展字符串两侧的搜索范围,然后使用正则表达式在扩展区域中执行重写。以下示例将匹配字符串的搜索范围向左扩展 20 个字节,向右扩展 50 个字节:
add rewrite action delurl_example delete_all 'HTTP.REQ.BODY(1000)' -search exampleurl -refineSearch 'extend(20,50).regex_select(re#http://exampleurl.(com|au)#)'
将文本转换为十六进制格式
以下函数将文本转换为十六进制格式并提取生成的字符串:
<text>.BLOB_TO_HEX(<string>)
例如,此函数将字节字符串“abc”转换为“61:62:63”。
加密和解密文本
在高级策略表达式中,您可以使用 ENCRYPT 和 DECRYPT 函数来加密和解密文本。由给定 NetScaler 设备或高可用性(HA)对上的加密函数加密的数据旨在通过同一 NetScaler 设备或 HA 对上的 DECRYPT 函数进行解密。该设备支持 RC4、DES3、AES128、AES192 和 AES256 加密方法。加密所需的密钥值不是用户可指定的。设置加密方法后,设备会自动生成适用于指定方法的随机密钥值。默认方法是 AES256 加密,这是最安全的加密方法,也是 Citrix 推荐的方法。
除非要更改加密方法或希望设备为当前加密方法生成新的密钥值,否则无需配置加密。
注意: 您还可以加密和解密 XML 有效负载。有关加密和解密 XML 有效负载的函数的信息,请参阅 加密和解密 XML 有效负载。
配置加密
在启动期间,设备默认使用 AES256 加密方法运行 set ns EncryptionParams 命令,并使用随机生成的适用于 AES256 加密的密钥值。设备还会加密密钥值,并将带有加密密钥值的命令保存到 NetScaler 配置文件中。因此,默认情况下,为 ENCRYPT 和 DECRYPT 函数启用 AES256 加密方法。即使设备每次重新启动时都会运行命令,保存在配置文件中的键值仍然存在。
如果要更改加密方法或希望设备为当前加密方法生成新的密钥值,则可以手动运行 set ns EncryptionParams 命令,或者使用配置实用程序。要使用 CLI 更改加密方法,请仅设置方法参数,如“示例 1:更改加密方法中所示。“ 如果希望设备为当前加密方法生成新的密钥值,请将方法参数设置为当前加密方法,将 keyValue 参数设置为空字符串 (“”),如“示例 2:为当前加密方法生成新的密钥值”中所示。“ 生成新的键值后,必须保存配置。如果不保存配置,则设备仅在下次重新启动之前使用新生成的密钥值,之后它将恢复为保存的配置中的键值。
使用 GUI 配置加密
- 导航到“系统”>“设置”。
- 在“设置”区域中,单击“更改加密 参数”。
- 在“更改加密参数”对话框中,执行以下操作之一:
- 要更改加密方法,请在“方法”列表中,选择所需的加密方法。
- 要为当前加密方法生成新的密钥值,请单击为所选方法生成新密钥。
- 单击确定。
使用加密和解密函数
您可以将 ENCRYPT 和 DECRYPT 函数用于任何返回文本的表达式前缀。例如,您可以在 Cookie 加密的重写策略中使用 ENCRYPT 和 DECRYPT 函数。在以下示例中,重写操作会加密由后端服务设置的名为 myCookie 的 cookie,并在客户端返回该 Cookie 时解密相同的 cookie:
add rewrite action my-cookie-encrypt-action replace "HTTP.RES.SET_COOKIE.COOKIE("MyCookie").VALUE(0)" "HTTP.RES.SET_COOKIE.COOKIE("MyCookie").VALUE(0).ENCRYPT"
add rewrite action my-cookie-decrypt-action replace "HTTP.REQ.COOKIE.VALUE("MyCookie")" "HTTP.REQ.COOKIE.VALUE("MyCookie").DECRYPT"
<!--NeedCopy-->
为加密和解密配置策略后,请保存配置以使策略生效。
为第三方加密配置加密密钥
在高级策略表达式中,您可以使用 ENCRYPT 和 DECRYPT 函数来加密和解密请求或响应中的文本。设备(独立、高可用性或群集)上由 ENCRYPT 函数加密的数据旨在由同一设备使用 DECRYPT 函数进行解密。设备支持 RC4、DES、Triple-DES、AES92 和 AES256 加密方法,每种方法都使用私有密钥进行数据加密和解密。您可以使用这些方法中的任何一种方法通过两种方式加密和解密数据-自加密和第三方加密。
设备(独立、高可用性或群集)中的自我加密功能通过评估标头值来加密然后解密数据。理解这一点的一个例子是 HTTP Cookie 加密。该表达式评估标头,加密传出响应中 Set-Cookie 标头中的 HTTP cookie 值,然后在客户端随后传入请求的 cookie 标头中返回 cookie 值时对其进行解密。密钥值不是用户可配置的,而是在 set ns EncryptionParams 命令中配置加密方法时,设备会自动为配置的方法生成随机密钥值。默认情况下,该命令使用 AES256 加密方法,这是高度安全的方法,Citrix 建议使用此方法。
第三方加密功能使用第三方应用程序对数据进行加密或解密。例如,客户端可能会对请求中的数据进行加密,而设备会在将数据发送到后端服务器之前对其进行解密,反之亦然。要执行此操作,设备和第三方应用程序必须共享密钥。在设备上,您可以使用加密密钥对象直接配置私有密钥,设备会自动生成密钥值以实现更强的加密。在第三方设备上手动配置相同的密钥,以便设备和第三方应用程序都可以使用相同的密钥来加密和解密数据。
注意:使用第三方加密,您还可以加密和解密 XML 负载。有关用于加密和解密 XML 负载的函数的信息,请参阅“加密和解密 XML 负载”。
密码方法
密码方法提供两种函数:一种是将明文字节序列转换为密文字节序列的加密函数,另一种是将密文转换回明文的解密函数。密码方法使用称为密钥的字节序列来执行加密和解密。使用相同密钥进行加密和解密的密码方法称为对称方法。使用不同密钥进行加密和解密的密码方法是不对称的。非对称密码最引人注目的例子是公钥加密,它使用任何人都可以使用的公钥进行加密,使用只有解密者才知道的私钥。
如果您没有密钥,好的密码方法使得解密(“破解”)密文是不可行的。“不可行”实际上意味着破解密码文本将花费比其价值更多的时间和计算资源。随着计算机变得更强大、更便宜,以前无法破解的密码变得更加可行。此外,随着时间的推移,密码方法(或其实现)中会发现缺陷,从而使破解变得更加容易。因此,较旧的密码方法更受欢迎。通常,长度较长的密钥比较短的密钥提供更好的安全性,但代价是加密和解密时间更长。
密码方法可以使用流密码或分组密码。RC4 是最安全的流密码,仅用于旧版应用程序。分组密码可以包括填充。
串流密码
流密码方法对单个字节进行操作。NetScaler- 设备上只有一个流密码可用:RC4,它使用 128 位(16 字节)的密钥长度。对于给定的密钥,RC4 会生成一个伪随机的字节序列,调用密钥流,该密钥流与明文进行 X 或以生成密文。RC4 不再被认为是安全的,只有在传统应用程序需要时才应使用。
块密码
分组密码方法在固定的字节块上运行。NetScaler 设备提供两种块密码:数据加密标准 (DES) 和高级加密标准 (AES)。DES 使用 8 字节的块大小和(在 NetScaler 设备上)两种密钥长度选择:64 位(8 字节),其中 56 位为数据,8 位为奇偶校验,三重 DES,192 位(24 字节)密钥长度。AES 的块大小为 16 字节,(在 NetScaler 上)有三种密钥长度选择:128 位(16 字节)、192 位(24 字节)和 256 位(32 字节)。
填充
如果分组密码的明文不是块的整数,则可能需要填充更多字节。例如,假设明文是“xyzzy”(十六进制 78797a7a79)。对于 8 字节的 Triple-DES 块,必须填充此值才能创建 8 个字节。填充方案必须允许解密函数在解密后确定原始明文的长度。以下是目前正在使用的一些填充方案(n 是添加的字节数):
- PKCS7:每个字节相加 n 个字节的值。例如,78797a7a79030303。这是 OpenSSL 和 ENCRYPT () 策略函数使用的填充方案。PKCS5 的填充方案与 PKCS7 相同。
- ANSI X.923:添加 n-1 个零字节和值 n 的最后一个字节。例如,78797a7a79000003。
- ISO 10126:添加 n-1 个随机字节和值 n 的最后一个字节。例如,78797a7a79xx03,其中 xx 可以是任何字节值。DECRYPT () 策略函数接受此填充方案,这也允许它接受 PKCS7 和 ANSI X.923 方案。
- ISO/IEC 7816-4:添加一个 0x80 字节和 n-1 个零字节。例如,78797a7a79800000。这也称为 OneAndZero 填充。
- 零:添加 n 个零字节。示例:78797a7a79000000。这只能用于不包含 NUL 字节的明文。
如果使用填充并且明文是块的整数,则通常会添加一个额外的块,以便解密函数可以明确地确定原始明文长度。对于 PCKS7 和 8 字节的块,这将是 0808080808080808。
操作模式
分组密码有许多不同的操作模式,它们指定了多个明文块的加密方式。某些模式使用初始化向量 (IV),除了用于启动加密过程的明文数据块之外的数据块。最好对每个加密使用不同的 IV,这样相同的明文会产生不同的密文。IV 不需要是秘密的,因此要在密文之前加上。模式包括:
- 电子密码本(ECB):每个明文块都是独立加密的。没有使用 IV。如果明文不是密码块大小的倍数,则需要填充。相同的明文和密钥始终生成相同的密文。因此,欧洲央行被认为不如其他模式安全,只能用于传统应用程序。
- 密码块链 (CBC):在加密之前,每个明文块都使用先前的密文块或第一个块的 IV 进行 XOR。如果明文不是密码块大小的倍数,则需要填充。这是与 NetScaler 加密 Params 方法一起使用的模式。
- 密码反馈 (CFB):先前的密文块或第一个模块的 IV 已加密,输出与当前的明文块进行 XOR 以创建当前密文块。反馈可以是 1 位、8 位或 128 位。由于明文与密码文本是 XOR 的,因此不需要填充。
- 输出反馈 (OFB):通过将密码连续应用于 IV 并使用明文对键流块进行 XOR 来生成密钥流。填充不是必需的。
为第三方加密配置加密密钥
以下是在配置加密密钥时执行的配置任务。
- 添加加密密钥。为具有指定密钥值的指定密码方法配置加密密钥。
- 修改加密密钥。您可以编辑已配置的加密密钥的参数。
- 取消设置加密密钥。将已配置的加密密钥的参数设置为默认值。名称为的 EncryptionKey 值必须存在。将填充设置为 DEFAULT(由方法确定),删除现有的 IV,这会导致 ENCRYPT () 生成随机 IV。删除现有评论。无法重置方法和键值。
- 删除加密密钥。删除已配置的加密密钥。密钥不能有任何引用。
- 显示加密密钥。显示已配置的加密密钥或所有已配置密钥的参数。如果省略了该名称,则不会显示键值。
使用 CLI 添加加密密钥
在命令提示符下,键入:
add ns encryptionKey <name> -method <method> [-keyValue <keyvalue>][-padding (OFF | ON)] [-iv <hexstring>] -keyValue <keyvalue> [-comment <string>]
其中,
<method> = ( NONE | RC4 | DES3 | AES128 | AES192 | AES256 | DES | DES-CBC | DES-CFB | DES-OFB | DES-ECB | DES3-CBC | DES3-CFB | DES3-OFB | DES3-ECB | AES128-CBC | AES128-CFB | AES128-OFB | AES128-ECB | AES192-CBC | AES192-CFB | AES192-OFB | AES192-ECB | AES256-CBC | AES256-CFB | AES256-OFB | AES256-ECB ) <hexstring> = hex-encoded byte sequence
<!--NeedCopy-->
上述加密方法指定了以 CBC 为默认操作模式的操作模式。因此,DES、DES2、AES128、AES192 和 AES256 方法等同于 DES-CBC、DES3-CBC、AES128-CBC、AES192-CBC 和方法。AES256-CBC
使用 CLI 修改加密密钥
在命令提示符下,键入:
set ns encryptionKey <name> [-method <method>] [-keyValue <keyvalue>] [-padding ( OFF | ON )] [-iv <string>] [-comment <string>]
使用 CLI 取消设置加密密钥
在命令提示符下,键入:
unset ns encryptionKey <name> [-padding] [-iv] [-comment]
使用 CLI 删除加密密钥
在命令提示符下,键入:
rm ns encryptionKey <name>
使用 CLI 显示加密密钥
在命令提示符下,键入:
示例:
show ns encryptionKey [<name>]
add ns encryptionKey my_key -method aes256 -keyValue 26ea5537b7e0746089476e5658f9327c0b10c3b4778c673a5b38cee182874711 –iv c2bf0b2e15c15004d6b14bcdc7e5e365
set ns encryptionKey my_key -keyValue b8742b163abcf62d639837bbee3cef9fb5842d82d00dfe6548831d2bd1d93476
unset ns encryptionKey my_key -iv
rm ns encryptionKey my_key
show ns encryptionKey my_key
Name: my_key
Method: AES256
Padding: DEFAULT
Key Value: (not disclosed)
<!--NeedCopy-->
使用 GUI 添加加密密钥
导航到“系统”>“加 密密钥”,然后单击“添加”创建加密密钥。
使用 GUI 修改加密密钥
导航到 系统 > 加密密钥 ,然后单击 编辑 以修改已配置的加密密钥的参数。
使用 GUI 删除加密密钥
导航到 系统 > 加密密钥 ,然后单击 删除。
用于第三方加密的加密和解密函数
以下是用于第三方加密的 ENCRYPT 函数。
ENCRYPT (encryptionKey, out_encoding)
其中,
设备的输入数据是要加密的文本
EncryptionKey:一个可选的字符串参数,它指定已配置的加密密钥对象以提供加密方法、私有密钥值和其他加密参数。如果省略,该方法将使用与 set ns cryptionParams 命令关联的自动生成的密钥值。
out_encoding:此值指定如何对输出进行编码。如果省略,则使用 BASE64 编码。
输入:
BASE64: original PEM base64-encoding: 6 bits (0..63) encoded as one ASCII character:
0..23 = 'A'..'Z', 24..51 = 'a'..'z', 52..61 = '0'..'9', 62 = '+', 63 = '/', '=' = pad byte.
BASE64URL: URL and Filename safe base64-encoding: same as BASE64 except 62 = '-', 63 = '_'
HEX_UPPER: Hexadecimal with 0..9 = '0'..'9' and 10..15 = 'A'..'F'.
HEX_LOWER: Hexadecimal with 0..9 = '0'..'9' and 10..15 = 'a'..'f'.
HEX_COLONS: Hexadecimal with 0..9 = '0'..'9' and 10..15 = 'A'..'F'; ':' between each hex byte. Matches BLOB_TO_HEX() output format
HEX: For input, accepts HEX_UPPER, HEX_LOWER, and HEX_COLONS format. For output, produces HEX_LOWER format
<!--NeedCopy-->
输出:输出是使用指定方法和密钥加密并使用指定输出编码进行编码的文本。它在需要 IV 的块方法和模式的加密文本之前插入生成的 IV,并且没有为 EncryptionKey 指定 IV 或省略 EncryptionKey。
以下是用于第三方解密的 DECRYPT 函数。
DECRYPT(encryptionKey, in_encoding)
其中,
输入数据是使用指定方法和使用指定输入编码进行编码的密钥的加密文本。对于需要 IV 的阻止方法和模式,预计此文本将在加密文本之前包含生成的 IV,并且未为 EncryptionKey 指定 IV 或省略 EncryptionKey。
cryptionKey — 一个可选的字符串参数,用于指定已配置的 EncryptionKey 对象以提供加密方法、私有密钥和其他加密参数。如果省略,将使用与 cryptionParams 设置关联的方法和自动生成的密钥
in_encoding- 一个可选枚举参数,用于指定输入的预期编码方式。这些值与 ENCRYPT 的 out_coding 相同。如果省略,将需要使用 BASE64 编码。
输出数据是未编码的解密文本。
变体和可选参数
以下是带有可选参数的这些函数的变体:
变体 | 说明 |
---|---|
ENCRYPT | 使用加密 Params 命令和 BASE64 输出编码参数。 |
ENCRYPT(out_encoding) | 使用 EncryptionParams 和指定的输出编码参数。 |
ENCRYPT(encryptionKey) | 使用指定的 EncryptionKey 和 BASE64 输出编码参数。 |
ENCRYPT(encryptionKey, out_encoding) | 使用指定的 EncryptionKey 和输出编码参数。 |
DECRYPT | 使用加密参数命令和 BASE64 输入编码参数。 |
DECRYPT(out_encoding) | 使用 cryptionParams 命令和指定的输入编码参数。 |
DECRYPT(encryptionKey) | 使用指定的 EncryptionKey 和 BASE64 输入编码参数。 |
DECRYPT(encryptionKey, out_encoding) | 使用指定的 EncryptionKey 和输入编码参数。 |
配置 HMAC 密钥
NetScaler 设备支持哈希消息身份验证码 (HMAC) 函数,该函数通过使用消息发件人和消息接收者之间共享的密钥来计算输入文本的摘要方法或哈希值。摘要方法(源自 RFC 2104 技术)对发件人进行身份验证,并验证邮件内容是否未被更改。例如,当客户端向 NetScaler 设备发送带有共享 HMAC 密钥的消息时,高级 (PI) 策略表达式使用 HMAC 函数计算所选文本上的基于哈希的代码。然后,当接收者收到带有密钥的消息时,它将通过将其与原始 HMAC 进行比较来重新计算 HMAC,以确定消息是否已被更改。HMAC 功能受独立设备以及高可用性配置或群集中的设备的支持。使用它类似于配置加密密钥。
add ns hmackey 和 set ns hmackey 命令包含一个参数,该参数指定用于 HMAC 计算的摘要方法和共享密钥。
要配置 HMAC 密钥,必须执行以下操作:
- 添加 HMAC 密钥。使用指定的键值配置 HMAC 密钥。
- 修改 HMAC 密钥。修改已配置的 HMAC 密钥的参数。摘要方法可以在不更改键值的情况下进行更改,因为键值长度不是由摘要决定的。但是,建议在更改摘要时指定一个新的密钥。
- 取消设置 HMAC 密钥。将已配置的 HMAC 密钥的参数设置为默认值。名称为的 HmacKey 对象必须存在。唯一可以取消设置的参数是注释,该注释将被删除。
- 删除 HMAC 密钥。删除已配置的密钥。密钥不能有任何引用。
- 显示 HMAC 密钥。显示已配置的 HMAC ac 密钥或所有已配置密钥的参数。如果省略了该名称,则不会显示键值。
配置唯一的随机 HMAC 密钥
您可以自动生成唯一的 HMAC 密钥。如果您的设备是群集配置,则会在流程开始时生成 HMAC 密钥,并将其分发给所有节点和数据包引擎。这样可以确保群集中的所有数据包引擎和所有节点的 HMAC 密钥相同。
在命令提示符下,键入:
add ns hmacKey <your_key> -digest <digest> -keyValue <keyvalue>
示例:
add ns hmacKey <name> -digest sha1 -keyValue AUTO
其中,
- 名称语法正确,不会复制现有密钥的名称。
- 可以在设置命令中使用“AUTO”keyValue 来为现有的 encrytionKey 和 hmacKey 对象生成新密钥。
注意:
如果 NetScaler 设备正在使用密钥加密和解密数据,或者生成和验证 HMAC 密钥,则自动生成密钥非常有用。由于密钥值本身在显示时已经加密,因此您无法检索生成的密钥值供任何其他方使用。
示例:
add ns hmacKey my_hmac_key -digest sha1 -keyValue 0c753c6c5ef859189cacdf95b506d02c1797407d
上述加密方法指定了以 CBC 为默认操作模式的操作模式。因此,DES、DES2、AES128、AES192 和 AES256 方法等同于 DES-CBC、DES3-CBC、AES128-CBC、AES192-CBC 和方法。AES256-CBC
使用 CLI 修改 HMAC 密钥
此命令修改为 HMAC 密钥配置的参数。您可以在不更改键值的情况下更改摘要,因为键值长度不是由摘要决定的。但是,建议在更改摘要时指定一个新的密钥。在命令提示符下,键入:
set ns hmacKey <name> [-digst <digest>] [-keyValue <keyvalue>]
[-comment <string>]
<!--NeedCopy-->
使用 CLI 取消设置 HMAC 密钥
此命令使用默认值设置为 HMAC 密钥配置的参数。名称为的 HmacKey 对象必须存在。唯一可以取消设置的参数是注释选项,该选项已被删除。在命令提示符下,键入:
unset ns hmacKey <name> -comment
使用 CLI 删除 HMAC 密钥
此命令删除已配置的 hmac 密钥。密钥不能有引用。在命令提示符下,键入:
rm ns hmacKey <name>
使用 CLI 显示 HMAC 密钥
在命令提示符下,键入:
show ns encryptionKey [<name>]
add ns hmacKey my_hmac_key -digest sha1 -keyValue 0c753c6c5ef859189cacdf95b506d02c1797407d
set ns hmacKey my_hmac_key -keyValue f348c594341a840a1f641a1cf24aa24c15eb1317
rm ns hmacKey my_hmac_key
show ns hmacKey my_hmac_key
Name: my_hmac_key
Digest: SHA1
Key Value: (not disclosed)
<!--NeedCopy-->