gpt4 book ai didi

Node.js Crypto,AES 的默认填充是什么?

转载 作者:搜寻专家 更新时间:2023-10-31 23:40:03 25 4
gpt4 key购买 nike

我遍历了 Node.js Crypto 文档,但仍然找不到 Cipher 类 使用的默认填充,例如方法 cipher.setAutoPadding(true) 没有关于它的规范。那么是 PKCS#5、PKCS#7...吗?

关于此的任何信息都会很棒!

最佳答案

在文档 ( https://nodejs.org/api/crypto.html#crypto_cipher_setautopadding_autopadding ) 中说:

Disabling automatic padding is useful for non-standard padding, for instance using 0x0 instead of PKCS padding.

所以它使用的是“PKCS”。更具体地说,PKCS7。

PKCS7 定义了与 PKCS5 相同的填充算法,但 PKCS5 假设所有密码都具有 8 字节(64 位) block 大小。 PKCS7 的版本将其描述为 k 字节 block 。实际上,人们忽略了 PKCS5 具有固定的 block 大小,“PKCS5 填充”和“PKCS7 填充”是一回事。

PKCS5(https://www.rfc-editor.org/rfc/rfc2898#section-6.1.1):

4. Concatenate M and a padding string PS to form an encoded
message EM:

EM = M || PS ,

where the padding string PS consists of 8-(||M|| mod 8) octets
each with value 8-(||M|| mod 8). The padding string PS will
satisfy one of the following statements:

PS = 01, if ||M|| mod 8 = 7 ;
PS = 02 02, if ||M|| mod 8 = 6 ;
...
PS = 08 08 08 08 08 08 08 08, if ||M|| mod 8 = 0.

PKCS7(https://www.rfc-editor.org/rfc/rfc5652#section-6.3):

Some content-encryption algorithms assume the input length is a
multiple of k octets, where k is greater than one. For such
algorithms, the input shall be padded at the trailing end with
k-(lth mod k) octets all having value k-(lth mod k), where lth is
the length of the input. In other words, the input is padded at
the trailing end with one of the following strings:

01 -- if lth mod k = k-1
02 02 -- if lth mod k = k-2
.
.
.
k k ... k k -- if lth mod k = 0

关于Node.js Crypto,AES 的默认填充是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50701311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com