加密/解密 - 密码 - JceSecurity限制

时间:2016-01-19 08:49:49

标签: encryption aes jce

我正在尝试使用javax.crypto.Ciper对数据进行加密/解密,其中我将转换为AES / ECB / PKCS5Padding。

我的问题是当我在本地计算机上运行代码时,加密/解密工作正常,但是当我在服务器上运行相同的代码时,系统在Cipher.init期间抛出异常(" AES / ECB / PKCS5Padding&#34 ;)

在进行详细分析并检查Cipher.java中的代码时,我发现当系统检查JceSecurity.isRestricted()时,问题出在以下方法Cipher-initCryptoPermission()中。

在我的本地计算机中,JceSecurity.isRestricted()返回FALSE,但是当它在Server上运行时,相同的方法返回TRUE。由于这在服务器上,系统不会为密码分配正确的权限。

不确定,JceSecurity限制的确切位置。感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

在进行深度潜水时,我发现了真正的问题和解决方案。

在Java_home / jre / lib / security下,有两个jar文件local_policy.jar和US_export_policy.jar。在local_policy.jar中,有一个名为default_local.policy的文件,它实际上存储了加密的所有权限。

在我的本地计算机中,该文件具有AllPermission,因此JceSecurity中没有对我的限制,允许我使用AES加密算法,但在服务器上它具有Java bundle提供的有限版本。

替换local_policy.jar没有任何限制(或无限制权限)就可以了。

在Internet上阅读更多有关它的信息时发现Java提供了受限版本的下载包,因为有些国家/地区对使用类型的cyptography算法有限制,因此您必须在更换jar文件之前咨询您的组织。

可以在以下位置的Oracle(Java)站点上找到没有限制的Jar文件。Download link