gpt4 book ai didi

java - keytool -genseckey -alias TDES -keyalg DESede -keysize 128 在 jre/bin 文件夹中有效,但当 keytool.exe 位于其他位置时无效

转载 作者:太空宇宙 更新时间:2023-11-04 13:31:56 32 4
gpt4 key购买 nike

我想创建一个大小为 128 位的 TDES key ,因此我使用 keytool 通过以下命令生成 jceks。当我在 C:\Program Files (x86)\Java\jdk1.8.0_25\jre\bin 文件夹下运行相同的命令时,我可以看到执行成功并且创建了 jceks。但是,当将 keytool.exe 导出到另一个位置(例如桌面)时,我可以看到相同的命令失败并出现以下错误。

C:\Users\Charan\Desktop\KeyGen>keytool -genseckey -alias TDES -keyalg DESede -keysize 128 -storetype jceks -keystore TDES.jceks -storepass change -keypass change
keytool error: java.security.InvalidParameterException: Wrong keysize: must be equal to 112 or 168

C:\Users\Charan\Desktop\KeyGen>
C:\Users\Charan\Desktop\KeyGen>

如果我遗漏了什么,请告诉我。我的应用程序引用 keytool.exe 并生成具有如上所述所选参数的 jceks。

经过进一步研究,我发现它仅适用于 Java 1.8.0_25,但即使我在 1.8.0_60/bin 下运行在 1.8.0_25 上成功的相同命令,我也会收到以下错误...

这是 Java 1.8.0_60 下详细输出的日志

C:\Program Files (x86)\Java\jdk1.8.0_60\jre\bin>keytool -genseckey -alias TDES -keyalg DESede -keysize 128 -storetype jceks -keystore TDES.jceks -storepass changeit -keypass changeit -v
keytool error: java.security.InvalidParameterException: Wrong keysize: must be equal to 112 or 168
java.security.InvalidParameterException: Wrong keysize: must be equal to 112 or 168
at com.sun.crypto.provider.DESedeKeyGenerator.engineInit(DESedeKeyGenerator.java:94)
at javax.crypto.KeyGenerator.init(KeyGenerator.java:517)
at javax.crypto.KeyGenerator.init(KeyGenerator.java:494)
at sun.security.tools.keytool.Main.doGenSecretKey(Main.java:1528)
at sun.security.tools.keytool.Main.doCommands(Main.java:969)
at sun.security.tools.keytool.Main.run(Main.java:340)
at sun.security.tools.keytool.Main.main(Main.java:333)

这是 1.8.0_25 的成功日志

C:\Program Files (x86)\Java\jdk1.8.0_25\jre\bin>keytool -genseckey -alias TDES -keyalg DESede -keysize 128 -storetype jceks -keystore TDES.jceks -storepass changeit -keypass changeit -v
Generated 128-bit DESede secret key
[Storing TDES.jceks]

C:\Program Files (x86)\Java\jdk1.8.0_25\jre\bin>

最佳答案

这可能是因为当 keytool.exe 更改位置时,它将使用默认的 JRE,而不是保存它的位置。较旧的 Java 版本仅支持 192 位(168 位有效)的三个 key TDES (ABC) key ,而不支持 128 位(112 位有效)的两个 key TDES (ABA)。

请注意,如果您遵循 NIST 要求,您应该使用 168 个不相关位的 TDES key 。 112 位 DES 的安全裕度低于 84 位,因此不再被认为是安全的。

关于java - keytool -genseckey -alias TDES -keyalg DESede -keysize 128 在 jre/bin 文件夹中有效,但当 keytool.exe 位于其他位置时无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32090643/

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