LUKS 的 luksAddKey 对密码长度正好为 64 个字符有问题吗?

LUKS 的 luksAddKey 对密码长度正好为 64 个字符有问题吗?
Ubuntu: 20.04.3 LTS
LUKS Version: 1
Cipher name: aes
Cipher mode: xts-plain64
Hash spec: sha256

当密码长度正好为 64 个字符时,我注意到使用 luksAddKey 时出现了一些奇怪的行为。我不相信这是一个错误,所以我想知道我遗漏了什么。

新密码的第一次输入长度为 64 个字符。第二次输入(=验证)是第一个密码,不包括最后一个字符,因此长度为 63 个字符。示例:

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

# cryptsetup --pbkdf-force-iterations 1000 luksAddKey $DEVICE
Enter any existing passphrase: 
Enter new passphrase for key slot:     <- 64 characters
Verify passphrase:                     <- 63 characters
# 

尽管输入不同,但已配置了新槽。我可以使用 2 个输入中的任何一个清除槽,就好像它们是相同的一样。相反,我期望其中一个密码出现错误消息。

# cryptsetup luksRemoveKey $DEVICE
Enter passphrase to be deleted: 
# 

字符数限制不应该导致这种情况,因为这个数字要高得多(512):

# cryptsetup --help | tail -n14

Default compiled-in metadata format is LUKS2 (for luksFormat action).

Default compiled-in key and passphrase parameters:
    Maximum keyfile size: 8192kB, Maximum interactive passphrase length 512 (characters)
Default PBKDF for LUKS1: pbkdf2, iteration time: 2000 (ms)
Default PBKDF for LUKS2: argon2i
    Iteration time: 2000, Memory required: 1048576kB, Parallel threads: 4

Default compiled-in device cipher parameters:
    loop-AES: aes, Key 256 bits
    plain: aes-cbc-essiv:sha256, Key: 256 bits, Password hashing: ripemd160
    LUKS: aes-xts-plain64, Key: 256 bits, LUKS header hashing: sha256, RNG: /dev/urandom
    LUKS: Default keysize with XTS mode (two internal keys) will be doubled.

还有谁能证实这种行为吗?

相关内容