2015-04-12 15 views
-1

我需要对应行一些解释,这是我不明白的:为什么来自DES算法的generateKey方法将密钥乘以8?

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

它会停止工作,如果我有,例如,6号,而不是8?

+0

你有没有读过你提到的类的javadoc? http://bouncycastle.org/docs/docs1.5on/org/bouncycastle/crypto/KeyGenerationParameters.html使用位作为长度单位。 –

+1

“*如果... *”它会停止工作:你为什么不尝试这个操作? – mins

+0

也许是因为常量是以字节为单位定义的,而'KeyGenerationParameters'类需要它以*位为单位* –

回答

0

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

0

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

它来自javadoc for KeyGenerationParameters。 DESPArameters.DES_KEY_LENGTH存储值8(DES密钥长度,以字节为单位),但KeyGenerationParameters需要密钥长度(以位为单位)。在KeyGenerationParameters的情况下,8字节* 8 = 64位。你可以把恒定值64

这个类可以用于随机密钥生成任何algorythm,例如,以生成DES密钥必须使用的64值,生成3DES键128或192