用公司里的一个组件,居然在本机跑不起来,看了下堆栈,是在解密一个东西的时候失败了,把最小复现代码弄出来,去掉了一个workaround,看到真正的问题是抛出了java.security.InvalidKeyException: Illegal key size or default parameters

Google搜了一下,发现貌似是美国加解密技术出口限制惹的祸,需要安装Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files,这个问题里有所有的下载地址。

不想安装的话,这个问题下面有通过反射关掉限制的代码,不过只能用在JDK7和JDK8上,而且实际上是违反了Oracle的授权协议,有法律风险。

有人说用Bouncy Castle可以避免,这点在Bouncy Castle的FAQ里说的很明确:依然需要安装文件破除限制。