为什么 DES 算法中的 generateKey 方法会将密钥乘以 8?

Why does generateKey method from DES algorithm multiply the key by 8?

我需要相应行的一些解释,我不明白:

KeyGenerationParameters kgp = new KeyGenerationParameters(sr,(DESParameters.DES_KEY_LENGTH) * 8);

如果我有数字 6 而不是 8,它会停止工作吗?

它乘以 8,因为它以字节为单位。代码需要位。

强度 - 我们要生成的密钥的大小(以位为单位)。

它来自 KeyGenerationParameters 的 javadoc。 DESPArameters.DES_KEY_LENGTH 存储值 8(以字节为单位的 DES 密钥长度),但 KeyGenerationParameters 需要以位为单位的密钥长度。对于 KeyGenerationParameters,8 字节 * 8 = 64 位。您可以只输入常量值 64.

此class可用于任何算法的随机密钥生成,例如,要生成 DES 密钥,您必须使用值 64,生成 3DES 密钥 128 或 192。