我的程序是一个使用256的密钥长度的simetric crypter。当我在没有安装JCE的计算机上使用它时(没有密钥长度),它崩溃时出现以下错误:
java.security.InvalidKeyException:非法密钥大小或默认参数
因此,计算机没有允许使用此密钥的扩展名。
有没有办法将java无限强度扩展与我的程序一起使用而无需安装?或者我可以打开一个对话框来自动安装吗?
另一方面,使用256密钥进行AES加密有更好的解决方案吗?也许另一个API允许我这样做而不添加任何扩展名? (像充气城堡)。
答案 0 :(得分:1)
JCE Unlimited Strength可以从Oracle网站下载。 (或者至少,我可以在澳大利亚下载它。)
但是,您首先需要同意Oracle Binary Code Licende for Java,第7条说明了这一点:
“7。出口法规。您同意美国出口管制法律和其他适用的进出口法律管辖您对本软件的使用,包括技术数据;其他信息可在Oracle全球贸易合规网站上找到( http://www.oracle.com/us/products/export)。您同意软件或其任何直接产品不会违反这些法律直接或间接导出,或者将用于这些法律禁止的任何目的,包括但不限于核,化学或生物武器扩散。“
所以回答你关于JCE的问题
有没有办法将java无限强度扩展与我的程序一起使用而无需安装?
我不是律师,但我认为Oracle许可证表明,如果您的使用符合美国出口法,您只能使用JCE代码(包括将其分发到您的产品中)。请注意,加密软件受到特别限制。
或者我可以打开一个自动安装对话框吗?
从法律上和技术上来说,这都不清楚。
也许其他API允许我在不添加任何扩展程序的情况下执行此操作? (像充气城堡)。
Bouncy Castle也受美国出口法律保护。此外,在Bouncy Castle FAQs中,FAQ#1表示Bouncy Castle的Java SE兼容加密提供的密钥长度由JCE使用的相同机制(和策略文件)管理。但问题#10说:
“在撰写本文时(2007年5月16日),Bouncy Castle已根据ECCN代码5D002获得批准,并根据许可证例外TSU批准出口。”
我也查了“License Exception TSU”,我发现它在Exceptions to the Export Administration Regulations (EAR)中被定义为:
“§740.13技术和软件无限制(TSU)
此许可证例外授权导出和 再次出口操作技术和软件; 销售技术和软件;软件更新 (bug修复); “大众市场”软件受制于 一般软件说明;和加密 源代码(和相应的目标代码)即 将被视为公开可用下 EAR的§734.3(b)(3)。“
等等。
它看起来很有希望,特别是对于开源产品,但我仍然建议建议真正的专家;即具有适当法律培训的专业人士。
答案 1 :(得分:1)
好消息,大家好!
从Java 6u181,7u171和8u151开始,您将能够通过调用以编程方式更改策略
Security.setProperty("crypto.policy", "unlimited");
如果安装了安全管理器,则需要将其配置为允许设置安全属性。有关JDK-8169716的更多信息。
更好的是,在Java 9中,并且从未来的Java 6u181,7u171,8u162版本开始,默认情况下将启用无限加密! JDK-1870157
中的更多信息