Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中生成双倍长度的3-DES密钥_Java_Encryption_Cryptography_Des - Fatal编程技术网

如何在Java中生成双倍长度的3-DES密钥

如何在Java中生成双倍长度的3-DES密钥,java,encryption,cryptography,des,Java,Encryption,Cryptography,Des,我正在寻找有关如何生成双倍长度3-DES密钥的信息、代码示例和java库。有人能告诉我吗 多谢各位 这将为DES-EDE生成112位密钥。当请求112位密钥时,SunJCE提供程序将返回一个24字节的密钥。这是因为每个字节中的一位是奇偶校验位(将16位添加到112以生成128位或16字节),然后重复前8个字节,总共24个字节 KeyGenerator gen = KeyGenerator.getInstance("DESede"); gen.init(112); SecretKey key =

我正在寻找有关如何生成双倍长度3-DES密钥的信息、代码示例和java库。有人能告诉我吗


多谢各位

这将为DES-EDE生成112位密钥。当请求112位密钥时,SunJCE提供程序将返回一个24字节的密钥。这是因为每个字节中的一位是奇偶校验位(将16位添加到112以生成128位或16字节),然后重复前8个字节,总共24个字节

KeyGenerator gen = KeyGenerator.getInstance("DESede");
gen.init(112);
SecretKey key = gen.generateKey();

请注意,此密钥只有80位有效强度,不能视为强加密。不要把它用于任何重要的事情。

所谓“双倍长度”,是指112位(16字节)的密钥,有效强度只有80位吗?@erickson谢谢你的留言。实际上我不确定。我需要生成一个双倍长度的3-DES密钥,这是我第一次研究它。因此,我正在尽可能多地了解它,到目前为止,我决定在这里更好地理解Java加密规范。如果您知道如何生成至少一个单长度的3DES密钥,我将非常感谢您分享如何生成。您如何知道需要生成“双长度”的3DES密钥?我没有获得接近票数。不要把你的知识等同于别人的知识(这也是我过去犯的一个错误)。并描述当你投票结束时,你对提问者的期望。@erickson,请允许我再问你一个问题。我了解到,这不是生成双长度3DES密钥的正确方法。一种方法是生成KeyGenerator.getInstance(“DESede”)的实例。然后将前8个字节与第二个8个字节连接起来,然后再次添加前8个字节,现在,当我们有这个24字节的新数组时,将从中生成一个新的DESede密钥。。对你来说,这是创建双倍长度3DES键的正确方法吗?@MaartenBodewes你认为我上面描述的方法是创建双倍长度3DES键的正确方法吗?绝对正确。使用钥匙工厂这绝对是首选的方式。例如,它还应与硬件加密提供商兼容。而且——如果支持的话——应该使用它,而不是三键黑客,事实并非如此。@Simplyi抱歉,我不理解你的问题,但是的,我同意马尔滕所引用的理由。这是生成这样一个密钥的正确方法,我会怀疑一个不支持这种用法的提供者。